Reputation: 707
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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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!
Upvotes: 0
Views: 16007
Reputation: 1330
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);
})
});
Upvotes: 1
Reputation: 707
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));
Upvotes: 0