我有一个 GridView,每一行都包含一个复选框,该列的标题是一个具有 checkAll 功能的复选框:
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<input id="chkAll" onclick="javascript:SelectAllCheckboxes(this);" runat="server" type="checkbox" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="chkSelect" runat="server" ToolTip="Select this order" AutoPostBack="true" OnCheckedChanged="chkSelect_OnCheckedChanged"/>
</ItemTemplate>
</asp:TemplateField>
...More BoundFields
</Columns>
SelectAllCheckboxes() 背后的 javascript
function SelectAllCheckboxes(spanChk) {
// Added as ASPX uses SPAN for checkbox
var oItem = spanChk.children;
var theBox = (spanChk.type == "checkbox") ?
spanChk : spanChk.children.item[0];
xState = theBox.checked;
elm = theBox.form.elements;
for (i = 0; i < elm.length; i++)
if (elm[i].type == "checkbox" &&
elm[i].id != theBox.id) {
//elm[i].click();
if (elm[i].checked != xState)
elm[i].click();
//elm[i].checked=xState;
}
}
我的 GridView 基本上包含来自我的网站的销售(订单),因此是美元金额。OnCheckedChanged 事件从页面上显示的 totalAmount 中添加(如果选中)或减去(如果未选中)当前行的价格。这一切都很好,除了当我单击 checkAll 复选框时,所有行复选框的所有 OnCheckedChanged 事件都会触发,并且需要很长时间来处理它。由于我在 OnCheckedChanged 方法中所做的只是对金额求和,有没有一种方法可以不调用各个复选框的事件,而只需调用一个单独的方法,该方法将获取所有 GridView 行并将它们全部加起来一次?