3

我有一个启用了 EnableSortingAndPagingCallbacks 的 GridView。当用户点击切换页面时,会执行回调并更新 GridView。发生这种情况后,我需要立即运行 JavaScript 函数,以便可以在新的数据页面上执行一些客户端操作。我怎样才能做到这一点?

我发现最接近我的问题的是:如何在更新面板回发后执行 javascript 回调?. 但是,在这里使用 pageLoad() 函数将不起作用,因为 pageLoad() 在 GridView 回调之后似乎没有被触发。

我需要使用 IE7 进行这项工作,否则我将使用 DOMSubtreeModified 事件侦听器。

不会触发 GridView1_PageIndexChanging 和 pageLoad 的示例代码。

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test_script.aspx.cs" Inherits="test_script" %>

<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="asp" %>

<form id="form1" runat="server">
    <asp:ToolkitScriptManager ID="ScriptManager1" runat="server" ScriptMode="Release" />
    <asp:GridView ID="GridView1" runat="server" AllowPaging="true" 
        EnableSortingAndPagingCallbacks="true" DataSourceID="SqlDataSource1" 
        OnPageIndexChanging="GridView1_PageIndexChanging" />
</form>
<script type="text/javascript">
    function pageLoad(sender, args) {
        alert('pageLoad');
    }
</script>

后面的代码:

public partial class test_script : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        // This doesn't fire when EnableSortingAndPagingCallbacks is set to true
    }
}

在上面的代码中,pageLoad() 在页面首次加载时触发,但在 GridView 分页后不会触发。在后面的代码中,Page_Load 在 GridView 被分页但 GridView1_PageIndexChanging() 没有被分页时触发。

如果我将 EnableSortingAndPagingCallbacks 更改为 false,所有函数都会按照您对每个 GridView 页面更改的预期触发。

4

2 回答 2

3

这应该有效:

   Protected Sub GridView1_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles GridView1.PageIndexChanging
        Me.GridView1.PageIndex = e.NewPageIndex
        BindGridview() 'This is what binds the control
        If Not ClientScript.IsClientScriptBlockRegistered(Me.GetType(), "myScript") Then
            ScriptManager.RegisterClientScriptBlock(Me.GridView1, Me.GetType(), "myScript", "alert('Done with paging');", True)
        End If
    End Sub

由于您没有指定语言,因此我使用了在我的视觉工作室中打开的第一个语言。

于 2013-04-05T22:18:36.683 回答
0

如果您想在 gridview 功能之后运行任何客户端,您可以使用<ClientSettings></ClientSettings> for you case iClientEvents-OnDataBinding="YoueFunctionFromScript()"

于 2017-03-08T14:24:34.483 回答