2013-04-05 50 views
3

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

在上面的代码,当页面第一次加载页面加载()火灾,但在GridView是分页后不火。在后面的代码中,Page_Load在GridView被分页时触发,但GridView1_PageIndexChanging()不触发。

如果我将EnableSortingAndPagingCallbacks更改为false,则所有的函数都会像您期望的那样在每个GridView页面上发生更改。

回答

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 

既然你没有指定的语言我用我的视觉工作室开辟了第一个。

+0

这在正常的GridView控件回发工作正常,但我一直没能得到的RegisterClientScriptBlock使用EnableSortingAndPagingCallbacks工作时。此外,PageIndexChanging在分页回调期间甚至不会触发。 – user2250630 2013-04-05 23:53:23

+0

然后我亲爱的朋友,你的代码中必须有一些非常错误的东西(可能是一些javascript错误),因为pageLoad和这个都适用于我。 – 2013-04-06 01:58:46

+0

我添加了一些示例代码,显示无法触发PageIndexChanging或pageLoad的地方。你能看到我的代码与你的不同吗? – user2250630 2013-04-08 02:39:02

0

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