がありGirdView
、内部に列Girdview
がありCheckbox
ます。Checkbox
AutoPostback
プロパティは、状態TRUE
でデータベースの作業を行っているため、に設定されていますCheckbox
checked
。今、私は通常のjavascript confirm
ボックスをに置き換えていますがJquery
DialogBox
、問題は、ユーザーcheck
にcheckbox
ダイアログが表示され、ユーザーがチェックボックスをオンにするかどうかを確認する必要がある場合です.yseを押すと、チェックボックスがオンになり、サーバー側が必要になりますイベント t 火災。代わりに、ユーザーがチェックボックスをオンにしてサーバー側のイベントが発生し、NOを押してもダイアログが表示されるとすぐに、データベースはすでにYESで更新されています。
これが私のコードです。
HTML
<asp:GridView ID="gvOrders" runat="server" AutoGenerateColumns="false"
CssClass="gvClickCollectOrders" DataKeyNames="OrderId" OnRowDataBound="gvOrders_RowDataBound"
AllowPaging="true" OnPageIndexChanging="gvOrders_PageIndexChanging">
<Columns>
<asp:BoundField DataField="OrderId" Visible="false" />
<asp:BoundField DataField="OrderNumber" HeaderText="Order No" DataFormatString="WWW {0}"
/>
<asp:TemplateField HeaderText="Order Date">
<ItemTemplate>
<asp:Label ID="orderDateText" Text="" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Order Ship Date">
<ItemTemplate>
<asp:HyperLink ID="orderShipDateAndTrackingData" CssClass="trackingInfo"
runat="server" Target="_blank" Text="" NavigateUrl=""></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Customer Name">
<ItemTemplate>
<%# Eval( "BillToFirstName") %>
<%# Eval( "BillToLastName") %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Received In Store">
<ItemTemplate>
<asp:CheckBox ID="cbIsReceived" runat="server" AutoPostBack="true" Checked='<%# MWClickAndCollectHelper.CheckOrderReceivedStatus(AlwaysConvert.ToInt(Eval("OrderId"))) %>'
OnCheckedChanged="cbIsReceived_CheckedChanged" CssClass="isReceivedCheckBox"
/>
<asp:Label ID="receivedDateText" Text="" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Collected By Customer">
<ItemTemplate>
<asp:CheckBox ID="cbIsCollected" runat="server" AutoPostBack="true" Checked='<%# MWClickAndCollectHelper.CheckOrderCollectedStatus(AlwaysConvert.ToInt(Eval("OrderId"))) %>'
OnCheckedChanged="cbIsCollected_CheckedChanged" CssClass="isCollectedCheckBox"
/>
<asp:Label ID="collectedDateText" Text="" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<EmptyDataTemplate>
<asp:Label ID="emptyGrid" runat="server" Text="There are no 'Click and Collect' orders placed for this store."
CssClass="emptyGridMessage"></asp:Label>
</EmptyDataTemplate>
</asp:GridView>
Jクエリ
< script type = "text/javascript" >
var isReceivedCheckBox = $('.isReceivedCheckBox input[type=checkbox]');
var isCollectedCheckBox = $('.isCollectedCheckBox input[type=checkbox]');
var def = $.Deferred();
function confirmDialog(msg) {
var dialog = $("<div id=\"dialog\">" + msg + "</div>");
$(dialog).dialog({
autoOpen: true,
width: 300,
height: 200,
resizable: false,
modal: false,
buttons: {
'Yes': function () {
def.resolve();
$(this).dialog("close");
},
'No': function () {
def.reject();
$(this).dialog("close");
}
},
close: function () {
$(this).remove();
}
});
return def.promise();
}
$(function () {
$(isReceivedCheckBox).on("change", function () {
var checked = this.checked;
var checkbox = this;
if (checked) {
confirmDialog("are your sure you want to check this checkbox?").done(function () {
checkbox.checked = true;
})
.fail(function () {
checkbox.checked = false;
});
} else {
confirmDialog("are your sure you want to uncheck this checkbox?").done(function () {
checkbox.checked = false;
})
.fail(function () {
checkbox.checked = true;
});
}
});
}); < /script>