0

如何将客户端 (javascript) onclick 事件添加到 DataPager 中的 Next/Previous 链接?

4

2 回答 2

0

上面的答案(由 Sheery 提供)非常适用于自定义寻呼机元素。但是,当使用 ListView 或 DataGrid 的常用数字或 Next/Previous 分页器样式时,您几乎没有多少控制权。通过使用客户端 jQuery/javascript 选择器,您可以不显眼地将客户端处理程序附加到寻呼机元素。对于这个例子,我正在跟踪是否有任何表单字段值发生了变化,如果发生了变化,那么在允许寻呼机执行其回发到服务器的默认行为之前,我们正在与用户确认他们有未保存的更改。

$(function () {

      var _formChanged = false;

      // grabs all pager links in last row of table named dgQuestions
      // and attachs a click eventhandler via jQuery library
      $("#dgQuestions tr:last a").click(function(e) {              
            if (!_formChanged)
                return true;

            var ok = confirm('You have UNSAVED changes. Continue?');
            if (ok) {               
                return true;
            }
            else {
                //Prevent the submit event and remain on the screen
                e.preventDefault();
                return false;
            }
        });

        // delegates change event handling to the form to indicate if ANY
        // form field value changed for testing prior to paging
        $("#form1").change(function(e) {
            _formChanged = true;
        });


    });
});

或者

也可以利用窗口的 beforeunload 事件来捕捉任何导航离开的动作,以测试未保存的更改。此代码不包括实际单击“保存”按钮。

$(window).on('beforeunload', function (e) {
    if (e.originalEvent.explicitOriginalTarget.id != "btnSave") {
        if (_formChanged)
            return 'You have UNSAVED changes. Continue?';
}
于 2013-07-15T21:28:19.520 回答
0

您可以在数据寻呼机中添加一个新按钮并处理它的点击事件。

<asp:ListView runat="server" ID="ListView1" 
    DataSourceID="SqlDataSource1">
    <LayoutTemplate>
        <table runat="server" id=" table1">
          <tr runat="server" id="itemPlaceholder">
          </tr>
        </table>
        <!-- This is the pager. Define all necessary markup here. -->
        <asp:DataPager runat="server" ID="DataPager" PageSize="5">
            <Fields>
                <asp:TemplatePagerField>              
                    <PagerTemplate>
                        <asp:Button ID="btn_Submit" runat="server" Text="Button" onclientclick="eventHandler(this)" />
                    </PagerTemplate>
                </asp:TemplatePagerField>
            </Fields>
        </asp:DataPager>
    </LayoutTemplate>
</asp:ListView>
于 2013-01-13T14:33:24.220 回答