将多维ArrayList绑定到Gridview

时间:2009-12-07 14:09:39

标签: asp.net data-binding gridview multidimensional-array arraylist

我有一个可供座位使用的DataGrid,每个座位都有一个可以预留座位的复选框。在按钮单击事件中,如果单击CheckBox,我将该行的内容添加到ArrayList,然后在重定向到确认页面之前将ArrayList添加到会话中:

protected void Reserve_Click(object sender, EventArgs e)
{
    {
        ArrayList seatingArreaList = new ArrayList();
        for (int i = 0; i < GridView1.Rows.Count; i++)
        {
            Guid SeatId = (Guid)GridView1.DataKeys[i][0];
            CheckBox cbReserve = (CheckBox)GridView1.Rows[i].FindControl("cbReserve");
            Label lblSection = (Label)GridView1.Rows[i].FindControl("lblSection");
            Label lblRow = (Label)GridView1.Rows[i].FindControl("lblRow");
            Label lblPrice = (Label)GridView1.Rows[i].FindControl("lblPrice");

            if (cbReserve.Checked) 
            {
                string tempRowInfo = lblSection.Text + "|" + lblRow.Text + "|" + lblPrice.Text;
                seatingArreaList.Add(tempRowInfo);
            }
        }
        // Add the selected seats to a session
        Session["Seating"] = seatingArreaList;
    }
   Response.Redirect("Confirm.aspx?concertId=" + Request.QueryString["concertId"]);
}

在确认页面上,我想将此数组拆分并将其绑定到各个列中的另一个网格视图。

在确认页面上,存在一个会话,其中有三个用管道分隔的列,我正在努力将其拆分并将其绑定到确认网格。

请帮忙!

2 个答案:

答案 0 :(得分:2)

这可能更容易创建DataTable,然后将其添加到会话变量。重定向到确认页面后,只需将GridView绑定到从会话变量中提取的DataTable

   protected void Reserve_Click(object sender, EventArgs e)
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("Section");
        dt.Columns.Add("Row");
        dt.Columns.Add("Price");

        {
            ArrayList seatingArreaList = new ArrayList();
            for (int i = 0; i < GridView1.Rows.Count; i++)
            {
                Guid SeatId = (Guid)GridView1.DataKeys[i][0];
                CheckBox cbReserve = (CheckBox)GridView1.Rows[i].FindControl("cbReserve");
                Label lblSection = (Label)GridView1.Rows[i].FindControl("lblSection");
                Label lblRow = (Label)GridView1.Rows[i].FindControl("lblRow");
                Label lblPrice = (Label)GridView1.Rows[i].FindControl("lblPrice");

                if (cbReserve.Checked)
                {
                    DataRow dr = dt.NewRow();
                    dr["Section"] = lblSection.Text;
                    dr["Row"] = lblRow.Text;
                    dr["Price"] = lblPrice.Text;
                    dt.Rows.Add(dr);
                }
            }
            // Add the selected seats to a session
            Session["Seating"] = dt;
        }
        Response.Redirect("Confirm.aspx?concertId=" + Request.QueryString["concertId"]);
    }

答案 1 :(得分:0)

 var q = from dto in seatingArreaList
     let z = dto.Split("|".ToCharArray())
     select z;

然后将q加入网格。