0

がありGirdView、内部に列GirdviewがありCheckboxます。Checkbox AutoPostbackプロパティは、状態TRUEでデータベースの作業を行っているため、に設定されていますCheckbox checked。今、私は通常のjavascript confirmボックスをに置き換えていますがJquery DialogBox、問題は、ユーザーcheckcheckboxダイアログが表示され、ユーザーがチェックボックスをオンにするかどうかを確認する必要がある場合です.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") %>&nbsp;
                    <%# 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>
4

1 に答える 1

1

別の方法があるかどうかはわかりませんが、手動でポストバックを行うことができます。AutoPostBack = false を設定し、__doPostBack 関数を使用します。

www.ilearnttoday.com/tag/how-to-use-__dopostback

于 2013-02-20T10:36:26.217 に答える