Wie das hinzufügen neuer raster-Zeilen ohne löschen der vorhandenen Daten
Meinen Code erfolgreich fügt neue Zeilen in der gridview-Steuerelement auf die Schaltfläche klicken, aber löscht alle eingegebenen Werte in Zeilen. Ich verstehe, dass die vorhandenen Daten sollten gespeichert werden, in ein ViewState, aber ich weiß nicht, wo/wie dies zu erreichen.
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 HINTER:
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Seine Einfache prüfen Sie zuerst, ob es irgendeine Zeile in gridview dann fügen Sie Zeilen mit dem Wert in Datentabelle dann fügen Sie die leere Zeile. Als unten.
Ja u haben, um Klar DatatTable vor dem einfügen von Daten in diese.
Ah. Kein Glück. Erstellen Sie eine neue datatable war nicht genug, wie es war nicht in der Lage zu finden, die den Namen der Spalten. So habe ich als " GridViewStructure();' statt und die Seite lädt jetzt ohne Fehler und fügt auch die Zeilen, aber das ursprüngliche Problem noch bleibt....löscht vorhandene Daten. Danke für die Hilfe obwohl
Entfernen GridViewStructure () - Funktion Hinzufügen, dass drei line-in AddNewRow () - Funktion.
Yup. Tat. Es noch löscht Werte, wenn neue Zeilen Hinzugefügt werden.
InformationsquelleAutor Raghubar
Verpasste ein Teil. Jedes mal, wenn die Seite geladen wird, speichern Sie die Tabelle, um zu sehen Zustand, und hat vergessen, es zu benutzen!
Versuchen, um es aus viewstate zu laden Seite wie diese:
Eine Sache, die ich hinzufügen würde, ist es keine gute Idee zum speichern der Tabelle im view state.
InformationsquelleAutor afzalulh