Hi snickk,
Refer below code.
HTML
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowEditing="OnRowEditing">
<Columns>
<asp:BoundField DataField="Student" HeaderText="Student" />
<asp:TemplateField HeaderText="Math">
<ItemTemplate>
<asp:TextBox ID="txtMath" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Science">
<ItemTemplate>
<asp:TextBox ID="txtScience" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="English">
<ItemTemplate>
<asp:TextBox ID="txtEnglish" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<br />
<asp:Button Text="Save" runat="server" OnClick="OnSave" />
Namespaces
C#
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
VB.Net
Imports System.Configuration
Imports System.Data
Imports System.Data.SqlClient
Code
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[] { new DataColumn("Student") });
dt.Rows.Add("Student A");
dt.Rows.Add("Student B");
dt.Rows.Add("Student C");
GridView1.DataSource = ViewState["dt"] as DataTable;
GridView1.DataBind();
}
}
protected void OnSave(object sender, EventArgs e)
{
foreach (GridViewRow row in GridView1.Rows)
{
string student = row.Cells[0].Text;
string math = (row.FindControl("txtMath") as TextBox).Text;
string science = (row.FindControl("txtScience") as TextBox).Text;
string english = (row.FindControl("txtEnglish") as TextBox).Text;
string query = "INSERT INTO StudentMark VALUES(@Name, @Math, @Science, @English)";
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand(query))
{
cmd.Parameters.AddWithValue("@Name", student);
cmd.Parameters.AddWithValue("@Math", math);
cmd.Parameters.AddWithValue("@Science", science);
cmd.Parameters.AddWithValue("@English", english);
cmd.Connection = con;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
}
}
}
VB.Net
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
If Not Me.IsPostBack Then
Dim dt As DataTable = New DataTable()
dt.Columns.AddRange(New DataColumn() {New DataColumn("Student")})
dt.Rows.Add("Student A")
dt.Rows.Add("Student B")
dt.Rows.Add("Student C")
GridView1.DataSource = TryCast(ViewState("dt"), DataTable)
GridView1.DataBind()
End If
End Sub
Protected Sub OnSave(ByVal sender As Object, ByVal e As EventArgs)
For Each row As GridViewRow In GridView1.Rows
Dim student As String = row.Cells(0).Text
Dim math As String = TryCast(row.FindControl("txtMath"), TextBox).Text
Dim science As String = TryCast(row.FindControl("txtScience"), TextBox).Text
Dim english As String = TryCast(row.FindControl("txtEnglish"), TextBox).Text
Dim query As String = "INSERT INTO StudentMark VALUES(@Name, @Math, @Science, @English)"
Dim constr As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString
Using con As SqlConnection = New SqlConnection(constr)
Using cmd As SqlCommand = New SqlCommand(query)
cmd.Parameters.AddWithValue("@Name", student)
cmd.Parameters.AddWithValue("@Math", math)
cmd.Parameters.AddWithValue("@Science", science)
cmd.Parameters.AddWithValue("@English", english)
cmd.Connection = con
con.Open()
cmd.ExecuteNonQuery()
con.Close()
End Using
End Using
Next
End Sub