Comment ajouter de nouvelles lignes de la grille sans effacer les données existantes

Mon Code avec succès ajoute de nouvelles lignes à la gridview sur le bouton de la souris, mais efface toutes les valeurs saisies dans des lignes existantes. Je comprends que les données doivent être stockées dans un état d'affichage, mais je ne sais pas où/comment atteindre cet objectif.

ASPX:

<asp:GridView ID="gvCommissions" runat="server" AutoGenerateColumns="False"
     CellPadding="4" ForeColor="#333333" AutoGenerateDeleteButton="True">                
  <Columns>
    <asp:TemplateField HeaderText="S.NO" ItemStyle-Width="5%">
     <ItemTemplate>
      <asp:Label ID="lblSno" runat="server" Width="98%"></asp:Label>
     </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="NAME" ItemStyle-Width="30%">
     <ItemTemplate>
      <asp:TextBox ID="txtName" runat="server" Width="98%"></asp:TextBox>
     </ItemTemplate>
  </Columns>
</asp:GridView>

CODE DERRIÈRE:

DataTable dt;
protected void Page_Load(object sender, EventArgs e)
{
if(ViewState["gvCommissions"] != null) 
dt = (DataTable)ViewState["gvCommissions"];
if (!Page.IsPostBack)
{
GridViewStructure();
AddNewRow();
}
else
{
dt = (DataTable)ViewState["gvCommissions"];
}
ViewState["gvCommissions"] = dt;  
}
private void GridViewStructure()
{
dt = new DataTable();
dt.Columns.Add("sno");
dt.Columns.Add("name");
}            
private void AddNewRow()
{            
dt = new DataTable();
dt.Columns.Add("sno");
dt.Columns.Add("name");
foreach (GridViewRow gvRow in gvCommissions.Rows)
{
DataRow drCurrentRow = dt.NewRow();
drCurrentRow["sno"] = ((Label)gvRow.FindControl("lblSno")).Text;
drCurrentRow["name"] = ((TextBox)gvRow.FindControl("txtName")).Text;
dt.Rows.Add(drCurrentRow);
}
DataRow dr = dt.NewRow();
dr["sno"] = "";
dr["name"] = "";
dt.Rows.Add(dr);
gvCommissions.DataSource = dt;
gvCommissions.DataBind();
}
protected void btnAddRow_Click(object sender, EventArgs e)
{
AddNewRow();            
}
InformationsquelleAutor Ruby | 2013-08-10