Привязать многомерный ArrayList к Gridview - PullRequest
1 голос
/ 07 декабря 2009

У меня есть 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 ]

2 голосов
/ 07 декабря 2009

Вероятно, было бы проще просто создать 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"]);
    }
0 голосов
/ 07 декабря 2009
 var q = from dto in seatingArreaList
     let z = dto.Split("|".ToCharArray())
     select z;

, а затем просто отправьте q в сетку.

...