简体   繁体   中英

How to get checkbox checked value inside Gridview using JavaScript / JQuery

I have a gridview inside its a checkbox. Also has column Amount. Now I want when user checked checkbox then Amount value should show in below textbox. If user check more than one row then all amount sum should be show in amount textbox.

Like if user select gridview first row & its amount value is 300. then below textbox show 300. Or if user checked 2 row & both have amount 300, 400 then textbox will show sum of both 700.

I'm trying JQuery code but not have much idea. This is what m trying.

function GetSelectedCasePartyAmount() {
        var counter = 0;
        $("#<%=gvDepositOrderDetail.ClientID%> input[id*='chkBoxGrdParty']:checkbox").each(function (index) {
        if ($(this).is(':checked'))
            counter++;
    });
    alert(counter);
}

this is my Gridview & textbox :

    <asp:GridView ID="gvDepositOrderDetail" runat="server" CssClass="table table-hover table-striped table-bordered"
                    AutoGenerateColumns="false" ShowHeaderWhenEmpty="True" AllowPaging="true"
                    PagerStyle-CssClass="paging" PageSize="10" OnRowDataBound="gvDepositOrderDetail_RowDataBound">
                    <PagerStyle CssClass="gridviewPager" />
                    <RowStyle CssClass="" />
                    <AlternatingRowStyle CssClass="active" />
                    <Columns>
                        <asp:TemplateField>
                            <ItemTemplate>
                                <asp:CheckBox ID="chkBoxGrdParty" runat="server" Checked="false" />
                                <asp:HiddenField ID="hdnDepositOrderId" runat="server" />
                            </ItemTemplate>
                            &lt;HeaderStyle CssClass="text-center" />
                            <ItemStyle CssClass="text-center" />
                        </asp:TemplateField>

                        <asp:TemplateField HeaderText="<%$Resources:ORDER_NO %>">
                            <ItemTemplate>
                                <asp:Label ID="lblOrderNo" runat="server"></asp:Label>
                            </ItemTemplate>
                            &lt;HeaderStyle CssClass="text-center" />
                            <ItemStyle CssClass="text-center" />
                        </asp:TemplateField>

                        <asp:TemplateField HeaderText="<%$ Resources:CASE_PARTY_NAME %>">
                            <ItemTemplate>
                                <asp:Label ID="lblCasePartyName" runat="server"></asp:Label>
                            </ItemTemplate>
                            &lt;HeaderStyle CssClass="text-center" />
                            <ItemStyle CssClass="text-center small-column" />
                        </asp:TemplateField>

                        <asp:TemplateField HeaderText="<%$ Resources:AMOUNT %>">
                            <ItemTemplate>
                                <asp:Label ID="lblAmount" runat="server"></asp:Label>
                            </ItemTemplate>
                            &lt;HeaderStyle CssClass="text-center" />
                            <ItemStyle CssClass="text-center" />
                        </asp:TemplateField>

                        <asp:TemplateField HeaderText="<%$ Resources:DEPOSIT_TYPE %>">
                            <ItemTemplate>
                                <asp:Label ID="lblDeopsitType" runat="server"></asp:Label>
                            </ItemTemplate>
                            &lt;HeaderStyle CssClass="text-center" />
                            <ItemStyle CssClass="text-center" />
                        </asp:TemplateField>

                        <asp:TemplateField HeaderText="<%$ Resources:DEPOSIT_SOURCE %>">
                            <ItemTemplate>
                                <asp:Label ID="lblDepositSource" runat="server"></asp:Label>
                            </ItemTemplate>
                            &lt;HeaderStyle CssClass="text-center" />
                            <ItemStyle CssClass="text-center" />
                        </asp:TemplateField>

                        <asp:TemplateField HeaderText="<%$ Resources:DECISION_DATE %>">
                            <ItemTemplate>
                                <asp:Label ID="lblDecisionDate" runat="server"></asp:Label>
                            </ItemTemplate>
                            &lt;HeaderStyle CssClass="text-center" />
                            <ItemStyle CssClass="text-center" />
                        </asp:TemplateField>

                        <%--       <asp:TemplateField>
                    <ItemTemplate>
                        <asp:LinkButton ID="lnkBtnViewDetail" CausesValidation="false" CommandName="ViewDetail" CssClass="btn btn-primary btn-sm"
                            runat="server"></asp:LinkButton>
                    </ItemTemplate>
                    &lt;HeaderStyle CssClass="text-center" />
                    <ItemStyle CssClass="text-center" />
                </asp:TemplateField>--%>
                    </Columns>
                    <EmptyDataTemplate>
                        <asp:Literal ID="ltrlEmptyData" runat="server" Text="<%$ Resources:Common,EMPTY_DATA_GRID%>"></asp:Literal>
                    </EmptyDataTemplate>
                </asp:GridView>

Any suggestion really appreciated!

You are a saver ^_^ I have a list of checkboxes on a gridView, i want to show the count of selected checks without having to post back to server, this was the optimal solution :))

       $(document).ready(function () {
           $('*[id^="myCheckBox"]').change(function () {
               var counter = 0;
               $("#<%=gvChecks.ClientID%> input[id*='myCheckBox']:checkbox").each(function  (index) {
                   if ($(this).is(':checked'))
                       counter++;
               });
               var the_label = document.getElementById('lblSelectedCount');
               the_label.textContent = counter;
               //alert(counter);
           })
       });

JQuery Code :

     function gvDepositOrderDetail_OnRowChecked(checkBoxElement, newAmount, targetElement)
    {
        var amountElement = $find(targetElement);
        var amount = amountElement.get_value() == ''? 0 : amountElement.get_value() - 0;
        if (isNaN(amount)) {
            amount = 0;
        }
        if (checkBoxElement.checked == false)
        {
            newAmount = newAmount * -1;
        }
        amount = amount + newAmount;
        amountElement.set_value(amount) ;
    }

from Code behind :

chk.Attributes.Add("onclick", string.Format("javascript:gvDepositOrderDetail_OnRowChecked(this,{0},'{1}');", lblAmount.Text, txtAmount.ClientID));

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM