In this article I will add new row to grid. Trick is very simple.
we have footer template for each Template, by default the visibility of this footer template is set to false.
On add new row button click event, we will set the visibility of Gridview footer row to true and bind the grid again.
To stop page being refreshed, add this gridview into AjaxUpdate panel.
Aspx code:
font face="tahoma,arial,helvetica,sans-serif" size="2"> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:TemplateField HeaderText="ID">
<ItemTemplate>
<asp:Label ID="lblID" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"ID") %>'></asp:Label>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtID" runat="server"></asp:TextBox>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="First Name">
<ItemTemplate>
<asp:Label ID="lblfirstName" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"FirstName") %>'></asp:Label>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtFirstName" runat="server"></asp:TextBox>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Last Name">
<ItemTemplate>
<asp:Label ID="lblLastName" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"LastName") %>'></asp:Label>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtLastName" runat="server"></asp:TextBox>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Email">
<ItemTemplate>
<asp:Label ID="lblEmail" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"Email") %>'></asp:Label>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtEmail" runat="server"></asp:TextBox>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Check all">
<HeaderTemplate>
<asp:CheckBox ID="CheckBox2" AutoPostBack="true" runat="server" OnCheckedChanged="CheckBox2_CheckedChanged1" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" />
</ItemTemplate>
<FooterTemplate>
<asp:LinkButton ID="lnkSave" runat="server" CommandName="Save" OnClick="lnkSave_Click">Save</asp:LinkButton>
</FooterTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
C# code behind
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
BindGrid();
}
}
private void BindGrid()
{
GridView1.DataSource = GridDataProvider.GetData();
GridView1.DataBind();
}
protected void CheckBox2_CheckedChanged1(object sender, EventArgs e)
{
foreach (GridViewRow r in GridView1.Rows)
{
((CheckBox)r.FindControl("CheckBox1")).Checked = true;
}
}
protected void Button1_Click(object sender, EventArgs e)
{
}
protected void Button2_Click(object sender, EventArgs e)
{
GridView1.ShowFooter = true;
BindGrid();
}
protected void lnkSave_Click(object sender, EventArgs e)
{
string ID = ( (TextBox) GridView1.FooterRow.FindControl("txtID") ).Text ;
string firstName = ( (TextBox) GridView1.FooterRow.FindControl("txtFirstName") ).Text;
// similarly you can find other controls and save
}
}
Vb.Net Code | Imports System Imports System.Data Imports System.Configuration Imports System.Web Imports System.Web.Security Imports System.Web.UI Imports System.Web.UI.WebControls Imports System.Web.UI.WebControls.WebParts Imports System.Web.UI.HtmlControls Public Partial Class _Default Inherits System.Web.UI.Page Protected Sub Page_Load(sender As Object, e As EventArgs) If Not Page.IsPostBack Then BindGrid() End If End Sub Private Sub BindGrid() GridView1.DataSource = GridDataProvider.GetData() GridView1.DataBind() End Sub Protected Sub CheckBox2_CheckedChanged1(sender As Object, e As EventArgs) For Each r As GridViewRow In GridView1.Rows (DirectCast(r.FindControl("CheckBox1"), CheckBox)).Checked = True Next End Sub Protected Sub Button1_Click(sender As Object, e As EventArgs) End Sub Protected Sub Button2_Click(sender As Object, e As EventArgs) GridView1.ShowFooter = True BindGrid() End Sub Protected Sub lnkSave_Click(sender As Object, e As EventArgs) Dim ID As String = (DirectCast(GridView1.FooterRow.FindControl("txtID"), TextBox)).Text Dim firstName As String = (DirectCast(GridView1.FooterRow.FindControl("txtFirstName"), TextBox)).Text ' similarly you can find other controls and save End Sub End Class '======================================================= 'Service provided by Telerik (www.telerik.com) 'Conversion powered by NRefactory. 'Built and maintained by Todd Anglin and Telerik '======================================================= |