Hi xboxown,
I have created a sample which full your requirement you need to modify the code according to your need.
SQL
CREATE TABLE UserData
(
Name VARCHAR(50)
,Quantity INT
)
INSERT INTO UserData VALUES('John', 23)
INSERT INTO UserData VALUES('Luke', 20)
INSERT INTO UserData VALUES('Ajay', 44)
INSERT INTO UserData VALUES('Emran', 12)
HTML
<div>
<asp:GridView ID="gvDetails" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<asp:Label ID="lblName" runat="server" Text='<%# Eval("Name") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Quantity">
<ItemTemplate>
<asp:Label ID="lblQuantity" runat="server" Text='<%# Eval("Quantity") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:TextBox ID="txtUserInput" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<br />
<asp:Button ID="btnSave" runat="server" Text="SaveAll" OnClick="Save" />
</div>
<div>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
$(function () {
$('[id*=btnSave]').click(function () {
var bind = false;
for (var i = 1; i < $('[id*=gvDetails] tr').length; i++) {
var row = $('[id*=gvDetails]').find('tr').eq(i);
var name = $(row).find('[id*=lblName]').html();
var quantity = parseInt($(row).find('[id*=lblQuantity]').html());
var txtUserInput = parseInt($(row).find('[id*=txtUserInput]').val());
if (txtUserInput > quantity) {
if (confirm('Do you want to update ' + quantity + ' with ' + txtUserInput + '?')) {
var Detail = {};
Detail.Name = name;
Detail.Quantity = quantity;
Detail.UserInput = txtUserInput;
$.ajax({
type: "POST",
url: "Default.aspx/Update",
data: "{ Detail :" + JSON.stringify(Detail) + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (r) {
bind = r.d;
},
error: function (r) {
alert(r.responseText);
}
});
}
}
}
alert('Data Submitted Successfully');
});
});
</script>
</div>
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindData();
}
}
protected void Save(object sender, EventArgs e)
{
BindData();
}
[WebMethod]
public static bool Update(Data Detail)
{
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
SqlConnection con = new SqlConnection(constr);
SqlCommand cmd = new SqlCommand("UPDATE UserData SET Quantity = @UserInput WHERE Name = @Name", con);
cmd.Parameters.AddWithValue("@UserInput", Detail.UserInput.Trim());
cmd.Parameters.AddWithValue("@Name", Detail.Name.Trim());
con.Open();
cmd.ExecuteNonQuery();
con.Close();
return true;
}
public class Data
{
public string Name { get; set; }
public string UserInput { get; set; }
}
private void BindData()
{
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
SqlConnection con = new SqlConnection(constr);
SqlCommand cmd = new SqlCommand("SELECT * FROM UserData", con);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
sda.Fill(dt);
gvDetails.DataSource = dt;
gvDetails.DataBind();
}
VB.Net
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not IsPostBack Then
BindData()
End If
End Sub
Protected Sub Save(sender As Object, e As EventArgs)
BindData()
End Sub
<WebMethod()> _
Public Shared Function Update(Detail As Data) As Boolean
Dim constr As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString
Dim con As New SqlConnection(constr)
Dim cmd As New SqlCommand("UPDATE UserData SET Quantity = @UserInput WHERE Name = @Name", con)
cmd.Parameters.AddWithValue("@UserInput", Detail.UserInput.Trim())
cmd.Parameters.AddWithValue("@Name", Detail.Name.Trim())
con.Open()
cmd.ExecuteNonQuery()
con.Close()
Return True
End Function
Public Class Data
Public Property Name() As String
Get
Return m_Name
End Get
Set(value As String)
m_Name = value
End Set
End Property
Private m_Name As String
Public Property UserInput() As String
Get
Return m_UserInput
End Get
Set(value As String)
m_UserInput = value
End Set
End Property
Private m_UserInput As String
End Class
Private Sub BindData()
Dim constr As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString
Dim con As New SqlConnection(constr)
Dim cmd As New SqlCommand("SELECT * FROM UserData", con)
Dim sda As New SqlDataAdapter(cmd)
Dim dt As New DataTable()
sda.Fill(dt)
gvDetails.DataSource = dt
gvDetails.DataBind()
End Sub
Screenshot