validate item in entire gridview to check excess Quantity

RAVI 1,076 Reputation points
2024-07-10T08:38:03.7233333+00:00

Hello

This is my aspx page

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="yyy.aspx.cs" Inherits="yyy" %>

<html>
<head runat="server">
    <title>Untitled Page</title>
</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" CssClass="BigCheckBox" Font-Size="10pt" />
                      </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") %>'></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" /></div>
    </form>
</body>
</html>

This is c# Code

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class yyy : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        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(); 
    }
}

On load It shows like this

wwww

for example i select ItemName : Flour I have only 2 in stock but user taking 3 quantity so i want to show data not allowed in validation on button click

Thanking you

ASP.NET
ASP.NET
A set of technologies in the .NET Framework for building web applications and XML web services.
3,597 questions
{count} votes

1 answer

Sort by: Most helpful
  1. Lan Huang-MSFT 30,186 Reputation points Microsoft External Staff
    2024-07-11T06:44:05.2633333+00:00

    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


Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.