在GridView分页回调之后执行JavaScript

时间:2013-04-05 20:51:25

标签: javascript asp.net gridview callback

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

我发现的最接近我问题的是:How to have a javascript callback executed after an update panel postback?。但是,使用pageLoad()函数在这里不起作用,因为在GridView回调之后似乎没有触发pageLoad()。

我需要使用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页面更改时触发所有函数。

2 个答案:

答案 0 :(得分: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

由于您没有指定语言,我使用了第一个用我的visual studio打开的语言。

答案 1 :(得分:0)

如果要在gridview功能之后运行任何客户端,可以使用<ClientSettings></ClientSettings> 为你的情况我ClientEvents-OnDataBinding="YoueFunctionFromScript()"