1

我想做的是我想从列表框中选择 1,2 或 3 个项目并将它们保存到会话中,然后将它们全部显示在列表框中的另一个表单上。

这是我的代码!这是我关于堆栈溢出的第一篇文章,所以请不要讨厌 <3

    //WebForm1

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            lstProducts.Items.Add("Soap");
            lstProducts.Items.Add("Schampoo");
            lstProducts.Items.Add("Conditioner");
        }
    }

    protected void cmdBuy_Click(object sender, EventArgs e)
    {
            string[] products = new string[3];

            for (int i = 0; i < lstProducts.Items.Count; ++i)
            {
                if (lstProducts.Items[i].Selected)
                    products[i] = lstProducts.Items[i].Text;
                else
                    products[i] = "0";
            }

            Session["Cart"] = products;

    }

    protected void cmdCart_Click(object sender, EventArgs e)
    {
        if (Session["Cart"] != null)
        {
            Response.Redirect("WebForm2.aspx");
        }
    }
}


    //WebForm2


    protected void Page_Load(object sender, EventArgs e)
    {
        string[] products = (string[])Session["Cart"];

        for (int i = 0; i < 3; ++i)
        {
            if (products[i] != "0")
            {
                lstCart.Items.Add(products[i]);
            }
        }
    }
}
}

问题是我只能在form2的列表框中显示最后一个选定的项目???

4

1 回答 1

0

尝试这个

要存储列表框的所有项目,您可以将这些项目添加到数组中:

string[] a = new string[]{"item 1","item 2","item 3"};
Session["values"] = a;

在下一页中,您可以像这样检索它。

string[] a = (string[])Session["values"]

编辑#1

你的情况你可以这样做

        ArrayList al = new ArrayList();
        for (int i = 0; i < ListBox1.Items.Count; i++)
        {
            if (ListBox1.Items[i].Selected == true)
            {
                al.Add(ListBox1.Items[i].Value);
            }
        }
        Session["selectedValues"] = al;

现在您可以在另一个页面中使用这个 sessiom 变量,但不要忘记转换为 ArrayList 类型的对象。

于 2013-03-21T09:22:15.180 回答