1

J'ai un DataGrid de sièges disponible, chacun avec une case à cocher pour pouvoir réserver le siège. En cas de clic de bouton, si la case est cliqué, j'ajoute le contenu de la ligne à un ArrayList, puis en ajoutant le ArrayList à une session avant de rediriger vers la page de confirmation:Lier un ArrayList multidimensionnel à un 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"]); 
} 

Sur la page de confirmation, Id aiment diviser ce tableau et le lier à un autre gridview dans leurs colonnes individuelles.

Sur la page de confirmation existe une session qui a trois colonnes séparées par un tuyau, j'ai du mal à le diviser et à le lier à une grille de confirmation.

Aidez s'il vous plaît!

Répondre

3

Il serait probablement plus facile de créer simplement un DataTable, puis de l'ajouter à la variable de session. Une fois redirigé vers la page de confirmation, liez simplement GridView au DataTable tiré de la variable de session.

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

Merci! Il est logique d'utiliser la table de données sur cette page. J'essayais de l'utiliser sur la page de confirmation, et diviser le tableau en elle. Bien sûr, maintenant je n'ai pas besoin du tableau. Merci :-) – Neil

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

et puis juste bing q au réseau.