各行にチェックボックスが含まれている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行を取得してすべてを合計する別のメソッドを1回呼び出すだけの方法はありますか?一度?