我有一个启用了 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 页面更改的预期触发。