1

私がやりたいことは、リストボックスから1、2、または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]);
            }
        }
    }
}
}

問題は、フォーム 2 のリスト ボックスに最後に選択された項目のみを表示することです。

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 に答える