Hi BugHunter,
Refer below sample.
HTML
<asp:GridView ID="GridAddSCode" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="Id" HeaderText="Id" />
<asp:TemplateField HeaderText="CustomerId">
<ItemTemplate>
<asp:TextBox ID="txtCustomerId" OnTextChanged="txtState_TextChanged" AutoPostBack="true"
runat="server"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Country">
<ItemTemplate>
<asp:TextBox ID="txtCountry" Enabled="false" runat="server"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<br />
<asp:Button Text="Save" runat="server" OnClick="Save" />
<br />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="CustomerId" HeaderText="Id" />
<asp:BoundField DataField="Country" HeaderText="Country" />
</Columns>
</asp:GridView>
Namespaces
C#
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
VB.Net
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.Add("Id");
dt.Rows.Add(1);
dt.Rows.Add(2);
dt.Rows.Add(3);
GridAddSCode.DataSource = dt;
GridAddSCode.DataBind();
}
}
protected void txtState_TextChanged(object sender, EventArgs e)
{
GridViewRow clickedrow = ((TextBox)sender).NamingContainer as GridViewRow;
TextBox txtCustomerId = (TextBox)clickedrow.FindControl("txtCustomerId");
TextBox txtCountry = (TextBox)clickedrow.FindControl("txtCountry");
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["constr"].ConnectionString))
{
using (SqlCommand cmd = new SqlCommand(@"SELECT Country FROM Customers WHERE CustomerId = @CustomerId", con))
{
cmd.Parameters.AddWithValue("@CustomerId", txtCustomerId.Text.Trim());
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
DataTable dt = new DataTable();
da.Fill(dt);
txtCountry.Text = dt.Rows[0]["Country"].ToString();
}
}
}
}
protected void Save(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["constr"].ConnectionString);
SqlCommand cmd = null;
for (int i = 0; i < GridAddSCode.Rows.Count; i++)
{
TextBox txtCustomerId = GridAddSCode.Rows[i].FindControl("txtCustomerId") as TextBox;
TextBox txtCountry = GridAddSCode.Rows[i].FindControl("txtCountry") as TextBox;
cmd = new SqlCommand(@"INSERT INTO CustomerTestDemo(Customerid, Country) VALUES(@Customerid, @Country)", con);
cmd.Parameters.AddWithValue("@CustomerId", txtCustomerId.Text.Trim());
cmd.Parameters.AddWithValue("@Country", txtCountry.Text.Trim());
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
cmd = new SqlCommand("SELECT CustomerId, Country FROM CustomerTestDemo", con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
GridView1.DataSource = dt;
GridView1.DataBind();
}
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.Add("Id")
dt.Rows.Add(1)
dt.Rows.Add(2)
dt.Rows.Add(3)
GridAddSCode.DataSource = dt
GridAddSCode.DataBind()
End If
End Sub
Protected Sub txtState_TextChanged(ByVal sender As Object, ByVal e As EventArgs)
Dim clickedrow As GridViewRow = TryCast((CType(sender, TextBox)).NamingContainer, GridViewRow)
Dim txtCustomerId As TextBox = CType(clickedrow.FindControl("txtCustomerId"), TextBox)
Dim txtCountry As TextBox = CType(clickedrow.FindControl("txtCountry"), TextBox)
Using con As SqlConnection = New SqlConnection(ConfigurationManager.ConnectionStrings("constr").ConnectionString)
Using cmd As SqlCommand = New SqlCommand("SELECT Country FROM Customers WHERE CustomerId = @CustomerId", con)
cmd.Parameters.AddWithValue("@CustomerId", txtCustomerId.Text.Trim())
Using da As SqlDataAdapter = New SqlDataAdapter(cmd)
Dim dt As DataTable = New DataTable()
da.Fill(dt)
txtCountry.Text = dt.Rows(0)("Country").ToString()
End Using
End Using
End Using
End Sub
Protected Sub Save(ByVal sender As Object, ByVal e As EventArgs)
Dim con As SqlConnection = New SqlConnection(ConfigurationManager.ConnectionStrings("constr").ConnectionString)
Dim cmd As SqlCommand = Nothing
For i As Integer = 0 To GridAddSCode.Rows.Count - 1
Dim txtCustomerId As TextBox = TryCast(GridAddSCode.Rows(i).FindControl("txtCustomerId"), TextBox)
Dim txtCountry As TextBox = TryCast(GridAddSCode.Rows(i).FindControl("txtCountry"), TextBox)
cmd = New SqlCommand("INSERT INTO CustomerTestDemo(Customerid, Country) VALUES(@Customerid, @Country)", con)
cmd.Parameters.AddWithValue("@CustomerId", txtCustomerId.Text.Trim())
cmd.Parameters.AddWithValue("@Country", txtCountry.Text.Trim())
con.Open()
cmd.ExecuteNonQuery()
con.Close()
Next
cmd = New SqlCommand("SELECT CustomerId, Country FROM CustomerTestDemo", con)
Dim da As SqlDataAdapter = New SqlDataAdapter(cmd)
Dim dt As DataTable = New DataTable()
da.Fill(dt)
GridView1.DataSource = dt
GridView1.DataBind()
End Sub
Screenshot