3

EnableSortingAndPagingCallbacks が有効になっている GridView があります。ユーザーがクリックしてページを変更すると、コールバックが実行され、GridView が更新されます。これが発生した直後に JavaScript 関数を実行して、データの新しいページでクライアント側のアクションを実行できるようにする必要があります。どうすればこれを達成できますか?

私の質問に最も近いのはこれです:更新パネルのポストバック後に javascript コールバックを実行するにはどうすればよいですか? . ただし、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 がページングされた後は起動しません。コード ビハインドでは、GridView がページングされたときに Page_Load が発生しますが、GridView1_PageIndexChanging() は発生しません。

EnableSortingAndPagingCallbacks を false に変更すると、GridView ページが変更されるたびに期待どおりにすべての関数が起動します。

4

2 に答える 2