I have done it for the Datalist,similar way you can do it for gridview.
this is the code behind:
Note: First time You have to add table in your datalist and on button click another row will create otherwise write code on your page load
DataTable tbldata = null;
if (ViewState["items"] == null)
{
tbldata = new DataTable();
tbldata.Columns.Add(new DataColumn("ItemId"));
tbldata.Columns.Add(new DataColumn("AssetType"));
tbldata.Columns.Add(new DataColumn("AssetSubType"));
tbldata.Columns.Add(new DataColumn("AssetName"));
tbldata.Columns.Add(new DataColumn("AssetData"));
tbldata.Columns.Add(new DataColumn("Drop1"));
tbldata.Columns.Add(new DataColumn("Drop2"));
}
else
{
tbldata = (DataTable)ViewState["items"];
}
if (Num == 0)
{
DataRow dr = tbldata.NewRow();
tbldata.Rows.Add(dr);
Num = 1;
}
ViewState["items"] = tbldata;
dlstCreateAssets.DataSource = tbldata;
dlstCreateAssets.DataBind();
aspx page:
This will add another row in the datalist.
for saving data you have to take another datatable otherwise it will not save and will not retain the previous data.
So for that you have to take another datatable for that
<asp:UpdatePanel runat="server" ID="UPAssets">
<ContentTemplate>
<asp:DataList ID="dlstCreateAssets" runat="server" Width="100%" OnItemDataBound="dlstCreateAssets_ItemDataBound">
<ItemTemplate>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center">
<div id="content_div">
<table width="100%" border="0" cellpadding="1" cellspacing="0">
<tr>
<td align="left" style="padding-left: 30px;" id="id_td_pageHeading">
<asp:Label ID="lblName" runat="server" Text="Create/Modify Asset" Font-Bold="True"
Font-Size="Medium" CssClass="cslTitle"></asp:Label>
</td>
<td align="right">
</td>
<td align="left">
</td>
</tr>
<tr>
<td align="left" style="padding-left: 30px;" class="style20">
(*) Fields Mandatory
</td>
<td align="left">
<asp:Label ID="lblMsg" ForeColor="Red" runat="server" Text="" Visible="false"></asp:Label>
</td>
<td align="left">
</td>
</tr>
<tr>
<td align="left" style="padding-left: 30px;" class="style20">
Item Id
</td>
<td align="left">
<asp:TextBox ID="txtItemId" runat="server" Width="170px" Text='<%#Eval("ItemId")%>'></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" ControlToValidate="txtItemId"
ErrorMessage="Enter ItemId" ValidationGroup="usctrl1btn2">*</asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ValidationGroup="usctrl1btn2" ID="RegularExpressionValidator4"
runat="server" ErrorMessage="Enter only numeric value in Itemid." ControlToValidate="txtItemId"
SetFocusOnError="True" ValidationExpression="[0-9]*">*</asp:RegularExpressionValidator>
<asp:Button ID="btnCheckAvailability" runat="server" CssClass="asset-viewer-btn"
OnClick="btnCheckAvailability_Click" Text="Check Availability" />
</td>
<td align="left">
</td>
</tr>
<tr>
<td align="left" style="padding-left: 30px;" class="style20">
Type*
</td>
<td align="left">
<asp:DropDownList ID="DropDownList1" runat="server" DataTextField="AssetTypeName"
DataValueField="AssetTypeId" Width="170px">
</asp:DropDownList>
<asp:HiddenField runat="server" ID="Drop1" Value='<%#Eval("AssetType")%>' />
<asp:RequiredFieldValidator ValidationGroup="usctrl1" ID="RequiredFieldValidator2"
runat="server" ControlToValidate="DropDownList1" ErrorMessage="Select Type" InitialValue="-1">*</asp:RequiredFieldValidator>
</td>
<td align="left">
</td>
</tr>
<tr>
<td align="left" style="padding-left: 30px;" class="style20">
SubType*
</td>
<td align="left">
<asp:DropDownList ID="DropDownList2" runat="server" DataTextField="AssetSubTypeName"
DataValueField="AssetSubTypeId" Width="170px">
</asp:DropDownList>
<asp:HiddenField runat="server" ID="Drop2" Value='<%#Eval("AssetSubType")%>' />
<asp:RequiredFieldValidator ValidationGroup="usctrl1" ID="RequiredFieldValidator3"
runat="server" ControlToValidate="DropDownList2" ErrorMessage="Select SubType"
InitialValue="-1">*</asp:RequiredFieldValidator>
</td>
<td align="left">
</td>
</tr>
<tr>
<td align="left" style="padding-left: 30px;" class="style20">
AssetName*
</td>
<td align="left">
<asp:TextBox ID="txtAssetName" runat="server" Width="170px" Text='<%#Eval("AssetName")%>'></asp:TextBox>
<asp:RequiredFieldValidator ValidationGroup="usctrl1" ID="RequiredFieldValidator1"
runat="server" ErrorMessage="Enter Asset Name" ControlToValidate="txtAssetName">*</asp:RequiredFieldValidator>
</td>
<td align="left">
</td>
</tr>
<tr>
<td align="left" style="padding-left: 30px;" class="style20">
Asset Data
</td>
<td align="left">
<asp:TextBox ID="TextBox2" runat="server" Text='<%#Eval("AssetData")%>' Height="114px"
TextMode="MultiLine" Width="249px"></asp:TextBox>
</td>
<td align="left">
</td>
</tr>
<tr>
<td align="left" style="padding-left: 30px;" class="style20">
</td>
<td align="left">
</td>
<td align="left">
</td>
</tr>
<tr>
<td align="left" style="padding-left: 30px;" class="style20">
<asp:ValidationSummary ValidationGroup="usctrl1" ID="ValidationSummary1" runat="server"
ShowMessageBox="True" ShowSummary="False" />
</td>
<td align="left">
<asp:Button ID="btnSave" runat="server" OnClick="btnSave_Click" Text="Save" CssClass="asset-viewer-btn" />
</td>
<td align="left">
</td>
</tr>
<tr>
<td align="left" style="padding-left: 30px;" class="style20">
<asp:ValidationSummary ID="ValidationSummary2" runat="server" ShowMessageBox="True"
ShowSummary="False" ValidationGroup="usctrl1btn2" />
</td>
<td align="left">
</td>
<td align="left">
</td>
</tr>
<tr>
<td align="left" style="padding-left: 30px;" class="style20">
</td>
<td align="left">
<asp:Label ID="lblshow" ForeColor="Red" runat="server" Visible="False"></asp:Label>
</td>
<td align="left">
</td>
</tr>
<tr>
<td align="left" style="padding-left: 30px;" class="style20">
</td>
<td align="right">
</td>
<td align="left">
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>
</ContentTemplate>
</asp:UpdatePanel>