Update, insert-und delete-gridview ohne Datenbank
Ich in der Lage bin zu löschen und einfügen aber ich habe keine Ahnung, wie zu wählen und zu aktualisieren. Ich bin mit DataTable
und ich nicht haben, um für die Verwendung von Datenbank zu aktualisieren
Markup:
<div>
Name <asp:TextBox ID="TxtName" runat="server" ></asp:TextBox>
Age <asp:TextBox ID="txtAge" runat="server" ></asp:TextBox>
<asp:Button ID="btnInsert" Text="Insert" runat="server" OnClick="btnInsert_Click" />
<asp:GridView ID="grdView" runat="server" OnRowCommand="grdView_RowCommand" OnRowDeleting="grdView_RowDeleting" OnSelectedIndexChanged="grdView_SelectedIndexChanged" >
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="btn" runat="server" Text="Delete" CommandName="delete" />
</ItemTemplate>
<EditItemTemplate>
</EditItemTemplate>
<%--<ItemTemplate>
<asp:Button ID="btnEdit" runat="server" Text="Edit" CommandName="Edit" />
</ItemTemplate>--%>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Button runat="server" CommandName="Change" ID="btnEdit" Text="Edit" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
Code:
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
public static DataTable dt;
public static int i = 1;
protected void btnInsert_Click(object sender, EventArgs e)
{
Session["datatable"] = dt;
dt = new DataTable();
DataRow dr = null;
dt.Columns.Add(new DataColumn("RowNumber", typeof(int)));
dt.Columns.Add(new DataColumn("Column1", typeof(string)));
dt.Columns.Add(new DataColumn("Column2", typeof(string)));
//
if (Session["datatable"] != null)
{
dt = (DataTable)Session["datatable"];
dr = dt.NewRow();
dr["RowNumber"] = i;
dr["Column1"] = TxtName.Text;
dr["Column2"] = txtAge.Text;
dt.Rows.Add(dr);
}
else
{
dr = dt.NewRow();
dr["RowNumber"] = i;
dr["Column1"] = TxtName.Text;
dr["Column2"] = txtAge.Text;
dt.Rows.Add(dr);
}
grdView.DataSource = dt;
grdView.DataBind();
i++;
}
//protected void btn_Click(object sender, EventArgs e)
//{
// dt = (DataTable)Session["datatable"];
// if (dt.Rows.Count > 0)
// {
// dt.Rows.RemoveAt(Convert .ToInt16 ( grdView.SelectedRow) );
// grdView .DataSource = dt;
// grdView.DataBind();
// }
//}
protected void grdView_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "delete")
{
dt = (DataTable)Session["datatable"];
if (dt.Rows.Count >= 0)
{
dt.Rows.RemoveAt(Convert.ToInt16(grdView.SelectedRow));
grdView.DataSource = dt;
grdView.DataBind();
}
else if (e.CommandName == "Change")
{
TxtName.Text = grdView .Rows[grdView .SelectedIndex].Cells[1].Text;
}
}
}
protected void grdView_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
grdView.DataSource = dt;
grdView.DataBind();
}
protected void grdView_SelectedIndexChanged(object sender, EventArgs e)
{
}
}
Ich schlage vor, Sie verwenden
Static
Klasse für diesen Zweck..
InformationsquelleAutor user3201772 | 2014-02-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Microsoft Gewusst wie: Bearbeiten von Zeilen in
DataTable
:Also in deinem Beispiel, wenn
grdView.SelectedIndex
ist der Zeilenindex, die Sie aktualisieren möchten, richten Sie den Befehl wie Sie es mit Ihrem anderen, und dann versuchen Sie so etwas wie im folgenden Beispiel.ie. zum aktualisieren ausgewählten Zeile mit Werten aus Textfeldern...
...das deine textbox-Werte, die Zeile zu aktualisieren. Ich verließ die
dt.Rows.Count >= 0
dort, weil Sie ausgeführt haben, überprüfen Sie in anderen Methoden.Wenn Sie möchten, dass der Befehl-Taste, um füllen Sie die Textfelder mit der aktuellen Zeile, die die Werte, dann müssen Sie die Rückseite dieser.
ie. zum Auffüllen von text-Felder mit den Werten für die ausgewählte Zeile...
Sie können nur
grdView.SelectedIndex
wenn Sie ein Element ausgewählt, die in IhremgrdView
. Sind Sie versuchen, zu aktualisieren es, indem Sie einen anderen Wert, wieRowNumber
? Wenn Sie möchten, um zu überprüfen, für den Fall, dass kein Element ausgewählt ist, können Sie dies tun, in Ihrem bedingten wiedt.Rows.Count >= 0 && grdView.SelectedIndex != -1
es ist immer -1, und ich bin brennen rowcommand Veranstaltung
ja, ich habe Sie nicht ausgewählt haben, die eine Zeile, weil ich noch nie gearbeitet mit datatable ich wollen, wählen Sie die Zelle Wert auf die Bearbeiten-Schaltfläche klicken Sie in die Textfelder und Bearbeiten Sie Sie
Ich bin mir nicht sicher, was du damit meinst. Wollen Sie eine Befehlsschaltfläche, die füllt die Textfelder mit den Werten für die ausgewählte Zeile?
InformationsquelleAutor grovesNL
ja, es ist mein problem gelöst ich habe das sol. zu meinem prob.
InformationsquelleAutor user3201772