Introduction
In this post, I am going to explain how to enable in-place editing with validation control in a GridView in ASP.NETThe GridView control allows editing on a row-by-row basis. Here I am writing this article to explain how to enable in-place editing with validation control in a GridView in ASP.NET.
Steps :
Step - 1 : Create New Project.
Go to File > New > Project > Select asp.net web forms application > Entry Application Name > Click OK.Step-2: Add a Database.
Go to Solution Explorer > Right Click on App_Data folder > Add > New item > Select SQL Server Database Under Data > Enter Database name > Add.Step-3: Create table for fetch data.
Open Database > Right Click on Table > Add New Table > Add Columns > Save > Enter table name > Ok.Step-4: Add Entity Data Model.
Go to Solution Explorer > Right Click on Project name form Solution Explorer > Add > New item > Select ADO.net Entity Data Model under data > Enter model name > Add.A popup window will come (Entity Data Model Wizard) > Select Generate from database > Next >
Chose your data connection > select your database > next > Select tables > enter Model Namespace > Finish.
Step-5: Add a Webpage and Design for Show Data in Gridview which rows are editable.
Go to Solution Explorer > Right Click on Project name form Solution Explorer > Add > New item > Select web form/ web form using master page under Web > Enter page name > Add.HTML Code
<h3>Inline Edit / Delete with validation control in Gridview in ASP.NET</h3> <br /> <div> <asp:GridView ID="gvContact" runat="server" AutoGenerateColumns="false" CellSpacing="5" CellPadding="5" DataKeyNames="ContactID" OnRowCancelingEdit="gvContact_RowCancelingEdit" OnRowDeleting="gvContact_RowDeleting" OnRowEditing="gvContact_RowEditing" OnRowUpdating="gvContact_RowUpdating"> <Columns> <asp:TemplateField HeaderText="SL No."> <ItemTemplate> <%#Container.DataItemIndex + 1 %> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Contact Person"> <ItemTemplate> <%#Eval("ContactPerson") %> </ItemTemplate> <EditItemTemplate> <asp:TextBox ID="txtContactPerson" runat="server" Text='<%#Bind("ContactPerson") %>'></asp:TextBox> <asp:RequiredFieldValidator ID="rftxtContactPerson" runat="server" ControlToValidate="txtContactPerson" ForeColor="Red" SetFocusOnError="true" ErrorMessage="Please provide Contact Person." ValidationGroup="Update">*</asp:RequiredFieldValidator> </EditItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Contact No"> <ItemTemplate> <%#Eval("ContactNo") %> </ItemTemplate> <EditItemTemplate> <asp:TextBox ID="txtContactNo" runat="server" Text='<%#Bind("ContactNo") %>'></asp:TextBox> <asp:RequiredFieldValidator ID="rftxtContactNo" runat="server" ControlToValidate="txtContactNo" ForeColor="Red" SetFocusOnError="true" ErrorMessage="Please provide Contact No." ValidationGroup="Update">*</asp:RequiredFieldValidator> </EditItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Email ID"> <ItemTemplate> <%#Eval("EmailID") %> </ItemTemplate> <EditItemTemplate> <asp:TextBox ID="txtEmailID" runat="server" Text='<%#Bind("EmailID") %>'></asp:TextBox> <asp:RegularExpressionValidator ID="rgtxtEmailID" runat="server" ControlToValidate="txtEmailID" ForeColor="Red" SetFocusOnError="true" ErrorMessage="Please provide valid email id." ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*">*</asp:RegularExpressionValidator> </EditItemTemplate> </asp:TemplateField> <asp:TemplateField> <%-- This is for Show Edit & Delete Button --%> <ItemTemplate> <asp:LinkButton ID="lbtnEdit" runat="server" CommandName="Edit" CommandArgument='<%#Eval("ContactID")%>'>Edit</asp:LinkButton> <asp:LinkButton ID="lbtnDelete" runat="server" CommandName="Delete" CommandArgument='<%#Eval("ContactID") %>' OnClientClick="javascript: return confirm('Are you really want to delete?')">Delete</asp:LinkButton> </ItemTemplate> <EditItemTemplate> <%-- This is for show Update & Cancel Button after click on Edit Button (Edit Mode) --%> <asp:LinkButton ID="lbtnUpdate" runat="server" CommandName="Update" CommandArgument='<%#Eval("ContactID")%>'>Update</asp:LinkButton> <asp:LinkButton ID="lbtnCancel" runat="server" CommandName="Cancel">Cancel</asp:LinkButton> </EditItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> </div>
Step-6: Write following code in Page_Load event for Show data in Gridview.
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { PopulateData(); // Populate All Contacts from Database and show in gridview } }Here is the function...
private void PopulateData() { using (MyDatabaseEntities dc = new MyDatabaseEntities()) { gvContact.DataSource = dc.Contacts.ToList(); gvContact.DataBind(); } }
Step-7: Write below code in Gridview RowEditing event for make particular row editable.
protected void gvContact_RowEditing(object sender, GridViewEditEventArgs e) { // This event is for open edit item templete for particular row gvContact.EditIndex = e.NewEditIndex; PopulateData(); }
Step-8: Write below code in Gridview RowCancelingEdit event for cancel row editing.
protected void gvContact_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { // This event is for cancel editing gvContact.EditIndex = -1; PopulateData(); }
Step-9: Write below code in Gridview RowDeleting event for delete record from database.
protected void gvContact_RowDeleting(object sender, GridViewDeleteEventArgs e) { // This event is for Deleting for particular row int ContactID = Convert.ToInt32(gvContact.DataKeys[e.RowIndex]["ContactID"].ToString()); using (MyDatabaseEntities dc = new MyDatabaseEntities()) { var c = dc.Contacts.Where(a => a.ContactID.Equals(ContactID)).FirstOrDefault(); if (c!= null) { dc.Contacts.Remove(c); } dc.SaveChanges(); PopulateData(); } }
Step-10: Write below code in Gridview RowUpdating event for update database record.
protected void gvContact_RowUpdating(object sender, GridViewUpdateEventArgs e) { // Here I will update record int ContactID = Convert.ToInt32(gvContact.DataKeys[e.RowIndex]["ContactID"].ToString()); // Find Textbox for get updated values TextBox txtContactPerson = (TextBox)gvContact.Rows[e.RowIndex].FindControl("txtContactPerson"); TextBox txtContactNo = (TextBox)gvContact.Rows[e.RowIndex].FindControl("txtContactNo"); TextBox txtEmailID = (TextBox)gvContact.Rows[e.RowIndex].FindControl("txtEmailID"); if (txtContactPerson != null && txtContactNo != null && txtEmailID != null) { if (txtContactPerson.Text.Trim() != "" && txtContactNo.Text.Trim() != "") { using (MyDatabaseEntities dc = new MyDatabaseEntities()) { Contact c = dc.Contacts.Where(a => a.ContactID==ContactID).FirstOrDefault(); if (c != null) { c.ContactPerson = txtContactPerson.Text.Trim(); c.ContactNo = txtContactNo.Text.Trim(); c.EmailID = txtEmailID.Text.Trim(); dc.SaveChanges(); } } PopulateData(); } } }
Step-11: Run Application.
- How to load gridview rows on demand from database through scrolling in ASP.NET
- How to implement Custom Paging in ASP.Net GridView using SQL Server Stored Procedure
- How to Marge Gridview adjacent cells depending on cells value in ASP.NET
- How to group columns in gridview header row in ASP.NET (programmer friendly way)
- Implementing cascading DropDowndivst in GridView in ASP.NET with out Web Service, Ajax.
- CheckBox inside GridView and handle its events to get records based on its Checked state.