我有一个启用了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页面更改时触发所有函数。
答案 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()"