<%@ Page Language="VB" AutoEventWireup="false" CodeFile="gridviewdynamic.aspx.vb" Inherits="gridviewdynamic" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>Add Dynamic Rows In Gridview</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="grvStudentDetails" runat="server" ShowFooter="True" AutoGenerateColumns="False"
CellPadding="4" ForeColor="#333333" GridLines="None" OnRowDeleting="grvStudentDetails_RowDeleting"
Width="97%" Style="text-align: left"
>
<Columns>
<asp:BoundField DataField="RowNumber" HeaderText="SNo" />
<asp:TemplateField HeaderText="Student Name">
<ItemTemplate>
<asp:TextBox ID="txtName" runat="server" MaxLength="50"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtName"
ErrorMessage="*" SetFocusOnError="True"></asp:RequiredFieldValidator>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Student Age">
<ItemTemplate>
<asp:TextBox ID="txtAge" runat="server" MaxLength="3" Width="66px"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="txtAge"
ErrorMessage="*" SetFocusOnError="True"></asp:RequiredFieldValidator>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Student Address">
<ItemTemplate>
<asp:TextBox ID="txtAddress" runat="server" Height="55px" TextMode="MultiLine"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="txtAddress"
ErrorMessage="*" SetFocusOnError="True"></asp:RequiredFieldValidator>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Gender">
<ItemTemplate>
<asp:RadioButtonList ID="RBLGender" runat="server" RepeatDirection="Horizontal">
<asp:ListItem Value="M">Male</asp:ListItem>
<asp:ListItem Value="F">Female</asp:ListItem>
</asp:RadioButtonList>
<asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" ControlToValidate="RBLGender"
ErrorMessage="*"></asp:RequiredFieldValidator>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Qualification">
<ItemTemplate>
<asp:DropDownList ID="drpQualification" runat="server">
<asp:ListItem>Select</asp:ListItem>
<asp:ListItem Value="G">Graduate</asp:ListItem>
<asp:ListItem Value="P">Post Graduate</asp:ListItem>
</asp:DropDownList>
<asp:RequiredFieldValidator ID="RequiredFieldValidator5" runat="server" ControlToValidate="drpQualification"
ErrorMessage="*" InitialValue="Select"></asp:RequiredFieldValidator>
</ItemTemplate>
<FooterStyle HorizontalAlign="Right" />
<FooterTemplate>
<asp:Button ID="ButtonAdd" runat="server" Text="Add New Row" OnClick="ButtonAdd_Click" />
</FooterTemplate>
</asp:TemplateField>
<asp:CommandField ShowDeleteButton="True" />
</Columns>
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="#EFF3FB" />
<EditRowStyle BackColor="#2461BF" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>
<br />
<center>
<asp:Button ID="btnSave" runat="server" Text="Save Data" OnClick="btnSave_Click" />
</center>
</div>
</form>
</body>
</html>
Imports System.Collections
Imports System.Configuration
Imports System.Data
Imports System.Web
Imports System.Web.Security
Imports System.Web.UI.HtmlControls
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts
Imports System.Web.UI
Partial Public Class gridviewdynamic
Inherits System.Web.UI.Page
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
FirstGridViewRow()
End If
End Sub
Private Sub FirstGridViewRow()
Dim dt As New DataTable()
Dim dr As DataRow = Nothing
dt.Columns.Add(New DataColumn("RowNumber", GetType(String)))
dt.Columns.Add(New DataColumn("Col1", GetType(String)))
dt.Columns.Add(New DataColumn("Col2", GetType(String)))
dt.Columns.Add(New DataColumn("Col3", GetType(String)))
dt.Columns.Add(New DataColumn("Col4", GetType(String)))
dt.Columns.Add(New DataColumn("Col5", GetType(String)))
dr = dt.NewRow()
dr("RowNumber") = 1
dr("Col1") = String.Empty
dr("Col2") = String.Empty
dr("Col3") = String.Empty
dr("Col4") = String.Empty
dr("Col5") = String.Empty
dt.Rows.Add(dr)
ViewState("CurrentTable") = dt
grvStudentDetails.DataSource = dt
grvStudentDetails.DataBind()
Dim txn As TextBox = DirectCast(grvStudentDetails.Rows(0).Cells(1).FindControl("txtName"), TextBox)
txn.Focus()
Dim btnAdd As Button = DirectCast(grvStudentDetails.FooterRow.Cells(5).FindControl("ButtonAdd"), Button)
Page.Form.DefaultFocus = btnAdd.ClientID
End Sub
Private Sub AddNewRow()
Dim rowIndex As Integer = 0
If ViewState("CurrentTable") IsNot Nothing Then
Dim dtCurrentTable As DataTable = DirectCast(ViewState("CurrentTable"), DataTable)
Dim drCurrentRow As DataRow = Nothing
If dtCurrentTable.Rows.Count > 0 Then
For i As Integer = 1 To dtCurrentTable.Rows.Count
Dim TextBoxName As TextBox = DirectCast(grvStudentDetails.Rows(rowIndex).Cells(1).FindControl("txtName"), TextBox)
Dim TextBoxAge As TextBox = DirectCast(grvStudentDetails.Rows(rowIndex).Cells(2).FindControl("txtAge"), TextBox)
Dim TextBoxAddress As TextBox = DirectCast(grvStudentDetails.Rows(rowIndex).Cells(3).FindControl("txtAddress"), TextBox)
Dim RBLGender As RadioButtonList = DirectCast(grvStudentDetails.Rows(rowIndex).Cells(4).FindControl("RBLGender"), RadioButtonList)
Dim DrpQualification As DropDownList = DirectCast(grvStudentDetails.Rows(rowIndex).Cells(5).FindControl("drpQualification"), DropDownList)
drCurrentRow = dtCurrentTable.NewRow()
drCurrentRow("RowNumber") = i + 1
dtCurrentTable.Rows(i - 1)("Col1") = TextBoxName.Text
dtCurrentTable.Rows(i - 1)("Col2") = TextBoxAge.Text
dtCurrentTable.Rows(i - 1)("Col3") = TextBoxAddress.Text
dtCurrentTable.Rows(i - 1)("Col4") = RBLGender.SelectedValue
dtCurrentTable.Rows(i - 1)("Col5") = DrpQualification.SelectedValue
rowIndex += 1
Next
dtCurrentTable.Rows.Add(drCurrentRow)
ViewState("CurrentTable") = dtCurrentTable
grvStudentDetails.DataSource = dtCurrentTable
grvStudentDetails.DataBind()
Dim txn As TextBox = DirectCast(grvStudentDetails.Rows(rowIndex).Cells(1).FindControl("txtName"), TextBox)
txn.Focus()
End If
Else
Response.Write("ViewState is null")
End If
SetPreviousData()
End Sub
Private Sub SetPreviousData()
Dim rowIndex As Integer = 0
If ViewState("CurrentTable") IsNot Nothing Then
Dim dt As DataTable = DirectCast(ViewState("CurrentTable"), DataTable)
If dt.Rows.Count > 0 Then
For i As Integer = 0 To dt.Rows.Count - 1
Dim TextBoxName As TextBox = DirectCast(grvStudentDetails.Rows(rowIndex).Cells(1).FindControl("txtName"), TextBox)
Dim TextBoxAge As TextBox = DirectCast(grvStudentDetails.Rows(rowIndex).Cells(2).FindControl("txtAge"), TextBox)
Dim TextBoxAddress As TextBox = DirectCast(grvStudentDetails.Rows(rowIndex).Cells(3).FindControl("txtAddress"), TextBox)
Dim RBLGender As RadioButtonList = DirectCast(grvStudentDetails.Rows(rowIndex).Cells(4).FindControl("RBLGender"), RadioButtonList)
Dim DrpQualification As DropDownList = DirectCast(grvStudentDetails.Rows(rowIndex).Cells(5).FindControl("drpQualification"), DropDownList)
grvStudentDetails.Rows(i).Cells(0).Text = Convert.ToString(i + 1)
TextBoxName.Text = dt.Rows(i)("Col1").ToString()
TextBoxAge.Text = dt.Rows(i)("Col2").ToString()
TextBoxAddress.Text = dt.Rows(i)("Col3").ToString()
RBLGender.SelectedValue = dt.Rows(i)("Col4").ToString()
DrpQualification.SelectedValue = dt.Rows(i)("Col5").ToString()
rowIndex += 1
Next
End If
End If
End Sub
Protected Sub ButtonAdd_Click(sender As Object, e As EventArgs)
AddNewRow()
End Sub
Protected Sub grvStudentDetails_RowDeleting(sender As Object, e As GridViewDeleteEventArgs)
SetRowData()
If ViewState("CurrentTable") IsNot Nothing Then
Dim dt As DataTable = DirectCast(ViewState("CurrentTable"), DataTable)
Dim drCurrentRow As DataRow = Nothing
Dim rowIndex As Integer = Convert.ToInt32(e.RowIndex)
If dt.Rows.Count > 1 Then
dt.Rows.Remove(dt.Rows(rowIndex))
drCurrentRow = dt.NewRow()
ViewState("CurrentTable") = dt
grvStudentDetails.DataSource = dt
grvStudentDetails.DataBind()
For i As Integer = 0 To grvStudentDetails.Rows.Count - 2
grvStudentDetails.Rows(i).Cells(0).Text = Convert.ToString(i + 1)
Next
SetPreviousData()
End If
End If
End Sub
Private Sub SetRowData()
Dim rowIndex As Integer = 0
If ViewState("CurrentTable") IsNot Nothing Then
Dim dtCurrentTable As DataTable = DirectCast(ViewState("CurrentTable"), DataTable)
Dim drCurrentRow As DataRow = Nothing
If dtCurrentTable.Rows.Count > 0 Then
For i As Integer = 1 To dtCurrentTable.Rows.Count
Dim TextBoxName As TextBox = DirectCast(grvStudentDetails.Rows(rowIndex).Cells(1).FindControl("txtName"), TextBox)
Dim TextBoxAge As TextBox = DirectCast(grvStudentDetails.Rows(rowIndex).Cells(2).FindControl("txtAge"), TextBox)
Dim TextBoxAddress As TextBox = DirectCast(grvStudentDetails.Rows(rowIndex).Cells(3).FindControl("txtAddress"), TextBox)
Dim RBLGender As RadioButtonList = DirectCast(grvStudentDetails.Rows(rowIndex).Cells(4).FindControl("RBLGender"), RadioButtonList)
Dim DrpQualification As DropDownList = DirectCast(grvStudentDetails.Rows(rowIndex).Cells(5).FindControl("drpQualification"), DropDownList)
drCurrentRow = dtCurrentTable.NewRow()
drCurrentRow("RowNumber") = i + 1
dtCurrentTable.Rows(i - 1)("Col1") = TextBoxName.Text
dtCurrentTable.Rows(i - 1)("Col2") = TextBoxAge.Text
dtCurrentTable.Rows(i - 1)("Col3") = TextBoxAddress.Text
dtCurrentTable.Rows(i - 1)("Col4") = RBLGender.SelectedValue
dtCurrentTable.Rows(i - 1)("Col5") = DrpQualification.SelectedValue
rowIndex += 1
Next
ViewState("CurrentTable") = dtCurrentTable
End If
Else
Response.Write("ViewState is null")
End If
End Sub
Protected Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
Try
SetRowData()
Dim table As DataTable = TryCast(ViewState("CurrentTable"), DataTable)
If table IsNot Nothing Then
For Each row As DataRow In table.Rows
Dim txName As String = TryCast(row.ItemArray(1), String)
Dim txAge As String = TryCast(row.ItemArray(2), String)
Dim txAdd As String = TryCast(row.ItemArray(3), String)
Dim rbGen As String = TryCast(row.ItemArray(4), String)
Dim drpQual As String = TryCast(row.ItemArray(5), String)
If txName IsNot Nothing OrElse txAge IsNot Nothing OrElse txAdd IsNot Nothing OrElse rbGen IsNot Nothing OrElse drpQual IsNot Nothing Then
Response.Write(String.Format("{0} {1} {2} {3} {4}<br/>", txName, txAge, txAdd, rbGen, drpQual))
End If
Next
End If
Catch ex As Exception
Throw New Exception(ex.Message)
End Try
End Sub
End Class