1

У меня есть DataGrid доступных мест, каждый с флажком, чтобы иметь возможность зарезервировать место. В случае нажатия кнопки, если CheckBox щелкают, я добавляю содержимое строки к ArrayList, а затем добавить в ArrayList к сессии перед перенаправлением на страницу подтверждения:Привязать многомерный массив ArrayList к Gridview

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"]); 
} 

На странице подтверждения, Id хотел бы разбить этот массив и привязать его к другому gridview в своих отдельных столбцах.

На странице подтверждения существует сеанс, в котором три столбца разделены на канал, я изо всех сил пытаюсь разделить это и привязать его к сетке подтверждения.

Пожалуйста, помогите!

ответ

3

Возможно, было бы проще просто создать 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

Спасибо! Имеет смысл использовать таблицу данных на этой странице. Я пытался использовать его на странице подтверждения и разбил массив на него. Конечно, теперь мне не нужен массив. благодаря :-) – Neil

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

, а затем просто Бинг д к сетке.

Смежные вопросы