1

私はそれが動作するように見える以下のコードを持っています。ただし、"gvSearch" の controlID を持つコントロールを参照するトリガーは、実際にはユーザー コントロール ページ内のグリッドビューです。

トリガーとして使用できるように、そのグリッドビューにアクセスするにはどうすればよいですか?

ありがとう!

<asp:UpdatePanel ID="pnlSearch" ChildrenAsTriggers="true" runat="server" >
      <Triggers>
          <asp:AsyncPostBackTrigger ControlID="btnSearch" />
          <asp:AsyncPostBackTrigger ControlID="gvSearch" />
      </Triggers>
</asp:UpdatePanel>

ありがとう!

概要:

<%@ Page Title="test">
<%@ Register src="test1.ascx" tagname="test1" tagprefix="test1uc" %>
    <UpdatePanel>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="btnSearch" />
            <asp:AsyncPostBackTrigger ControlID="gvSearch" />
        </Triggers>
        <ContentTemplate>
             <test1uc:test1 ID="test1a" runat="server" />
        </ContentTemplate>
    </UpdatePanel>
4

2 に答える 2

1

サブコントロールへのアクセスを要求することは良い習慣ではないという事実はさておき、これが私の最善の提案です...

次のように、ユーザー コントロールに を作成Public Subします。

Private ParentUpdatePanel As System.Web.UI.UpdatePanel

' Must be called on every Page_Load!
Public Sub RegisterAsyncTrigger(MyScriptManager As System.Web.UI.ScriptManager, MyUpdatePanel As System.Web.UI.UpdatePanel)
    MyScriptManager.RegisterAsyncPostBackControl(gvSearch)
    ParentUpdatePanel = MyUpdatePanel
End Sub

Page_Load イベントでは、次のように関数を呼び出します。

Protected Sub Page_Load(Sender As Object, e As EventArgs)
    ' Call our new function, passing in the current ScriptManager and the UpdatePanel
    ' The ScriptManager handles the asynchronous postbacks
    ' The UpdatePanel handles the dynamic updates
    test1.RegisterAsyncTrigger(ScriptManager.GetCurrent(Me), pnlSearch)
End Sub

パネルを更新する必要がある GridView コントロール内のイベント ハンドラーにgvSearchは、次のコードが含まれます。

ParentUpdatePanel.Update()
于 2013-02-20T21:56:36.533 に答える