0

リストボックス内の項目を別のページの別のリストボックスに運ぶリストボックスが1つのページにありますが、2番目のリストボックスに「System.Collection.ArrayList」が表示されます。

ページ1:

protected void btnCheckout_Click(object sender, EventArgs e)
{

    Session["Name"] = NameText.Text;
    Session["PhoneNumber"] = PhoneTextBox.Text;
    Session["Address"] = AddressText.Text;
    Session["Email"] = emailText.Text;
    Session["City"] = cityTextBox.Text;
    ArrayList al = new ArrayList();
    for (int i = 0; i < ItemListBox.Items.Count; i++)
    {
        if (ItemListBox.Items[i].Selected == true)
        {
            al.Add(ItemListBox.Items[i].Value);
        }
    }
    Session["selectedValues"] = al;
    Response.Redirect("Invoice.aspx");

}

ページ2:

protected void Page_Load(object sender, EventArgs e)
{
    string phoneNumber = (string)(Session["PhoneNumber"]);
    string homeAddress = (string)(Session["Address"]);
    string name = (string)(Session["Name"]);
    string email = (string)(Session["Email"]);
    string city = (string)(Session["City"]);
    phoneLabel.Text = phoneNumber;
    addressLabel.Text = homeAddress;
    nameLabel.Text = name;
    emailLabel.Text = email;
    cityLabel.Text = city;
    invoiceListBox.Items.Add(Session["selectedValues"].ToString());
}

他のすべてのラベル セッションは動作します。動作しないのはリスト ボックスのみです。

4

2 に答える 2

0

すべてのオブジェクトはSessionof 型に格納されているobjectため、それらのプロパティにアクセスするには、元の型にキャストし直す必要があります。これにより、それがどのように行われるかがわかります。ここでの鍵はArrayList al = Session["selectedValues"] as ArrayList;

ArrayList al = Session["selectedValues"] as ArrayList;

if(al != null)
{
    foreach(var item in al)
    {
        invoiceListBox.Items.Add(new ListItem {Value = item.toString(), Text = item.toString()});
    }
}

追加 これ は実際のサンプルです。

default.aspx

Phone Number: <asp:TextBox ID="txtPhoneNumber" runat="server" />
    <br />
    <asp:ListBox ID="ItemListBox" runat="server" SelectionMode="Multiple">
        <asp:ListItem Value="1">One</asp:ListItem>
        <asp:ListItem Value="2">Two</asp:ListItem>
        <asp:ListItem Value="3">Three</asp:ListItem>
        <asp:ListItem Value="4">Four</asp:ListItem>
    </asp:ListBox>
    <br />
    <asp:Button ID="btnSave" runat="server" Text="Save" OnClick="btnSave_Click" />
    <br />
    <br />
    <a href="page2.aspx">Page 2</a>

default.aspx.cs

namespace SO15888490
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }


        protected void btnSave_Click(object sender, EventArgs e)
        {
            Session["PhoneNumber"] = txtPhoneNumber.Text;

            ArrayList al = new ArrayList();

            for (int i = 0; i < ItemListBox.Items.Count; i++)
            {
                if (ItemListBox.Items[i].Selected == true)
                {
                    al.Add(ItemListBox.Items[i].Value);
                }
            }

            Session["ItemsList"] = al;
        }

    }

page2.aspx

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        Phone Number: <asp:Literal ID="litPhoneNumber" runat="server" />
        <br />
        Selected Items<br />
        <asp:Literal ID="litItemsList" runat="server" />
        <br />
        <a href="Default.aspx">Back to default.aspx</a>
    </div>
    </form>
</body>
</html>
}

page2.aspx.cs

namespace SO15888490 {
    public partial class page2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            litPhoneNumber.Text = (string)Session["PhoneNumber"];

            ArrayList al = Session["ItemsList"] as ArrayList;
            if (al != null)
            {
                foreach (var item in al)
                {
                    litItemsList.Text += item.ToString() + "<br/>";
                }
            }
        }
    } }
于 2013-04-08T21:02:39.600 に答える