Hi @RAVI,
Refer to the example below. Remember that the backend code needs to be placed in if (!this.IsPostBack).
<html>
<head runat="server">
<title>Untitled Page</title>
<script src="Scripts/jquery-3.7.0.min.js"></script>
<script type="text/javascript">
function GetSelected() {
//Reference the GridView.
var grid = document.getElementById("<%=gvitems.ClientID%>");
//Reference the CheckBoxes in GridView.
var checkBoxes = grid.getElementsByTagName("INPUT");
var message;
var b = null;
var qty = 0;
//Loop through the CheckBoxes.
for (var i = 0; i < checkBoxes.length; i++) {
if (checkBoxes[i].checked) {
var row = checkBoxes[i].parentNode.parentNode;
var itemName = row.cells[2].innerHTML;
var stock = parseInt(row.cells[4].innerText);
if (itemName != b) {
qty = parseInt(row.cells[3].querySelector("input").getAttribute("value"));
b = itemName;
} else {
qty = qty + parseInt(row.cells[3].querySelector("input").getAttribute("value"));
}
if (qty > stock) {
alert(itemName + "Inventory shortage!!!");
}
}
checkBoxes[i].checked = false;
}
return false;
}
function TextChanged(control) {
$(control).change();
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="gvitems" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField HeaderText="SELECT">
<HeaderTemplate>
<asp:CheckBox ID="chkHeader" runat="server" AutoPostBack="True" CssClass="BigCheckBox" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="chkSelect" runat="server" />
</ItemTemplate>
<HeaderStyle ForeColor="Blue" />
</asp:TemplateField>
<asp:TemplateField HeaderText="ID" SortExpression="POID">
<ItemTemplate>
<asp:Label ID="L1" runat="server" Text='<%# Bind("ID") %>'></asp:Label>
</ItemTemplate>
<HeaderStyle ForeColor="Blue" />
<ItemStyle Width="120px" />
</asp:TemplateField>
<asp:BoundField DataField="ItemName" HeaderText="Item Name" ItemStyle-Width="150" />
<asp:TemplateField HeaderText="QTY">
<FooterTemplate>
Total Value
</FooterTemplate>
<ItemTemplate>
<asp:TextBox ID="T1" runat="server" Width="60px" Text='<%#Eval("ItemQuantity") %>' AutoPostBack="true" onmouseleave="TextChanged(this)"></asp:TextBox>
</ItemTemplate>
<HeaderStyle ForeColor="Red"></HeaderStyle>
<ItemStyle HorizontalAlign="Center"></ItemStyle>
</asp:TemplateField>
<asp:TemplateField HeaderText="STOCK QTY" SortExpression="POID">
<ItemTemplate>
<asp:Label ID="L2" runat="server" Text='<%# Bind("Stock") %>'></asp:Label>
</ItemTemplate>
<HeaderStyle ForeColor="Blue" />
<ItemStyle Width="120px" />
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:Button ID="Button1" runat="server" Text="SAVE" OnClientClick="return GetSelected()" />
</div>
</form>
</body>
</html>
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[4] { new DataColumn("ID", typeof(int)),
new DataColumn("ItemName", typeof(string)),
new DataColumn("ItemQuantity",typeof(int)),
new DataColumn("Stock",typeof(int))});
dt.Rows.Add(1, "Flour", "1", "2");
dt.Rows.Add(2, "Tea", "20", "40");
dt.Rows.Add(3, "Flour", "2", "2");
dt.Rows.Add(4, "Mango", "1", "8");
gvitems.DataSource = dt;
gvitems.DataBind();
}
}
Best regards,
Lan Huang
If the answer is the right solution, please click "Accept Answer" and kindly upvote it. If you have extra questions about this answer, please click "Comment".
Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread