1

RadToolTipManager によって表示される選択ダイアログがあります。ダイアログは、いくつかの入力、RadGrid、およびユーザー コントロール内のボタンで構成されます。ユーザーがボタンをクリックすると、選択ダイアログが閉じます。ボタンの背後にあるコードが機能しており、イベント ハンドラーを介して情報がページに返されています。ただし、ページはそのコントロールを新しいデータで更新しません。

RadToolTipManager では Ajax 呼び出しを使用する必要があると判断し、RadAjaxManager をページに追加し、RadAjaxManagerProxy をユーザー コントロールに追加しました。しかし、ユーザー コントロール内のボタンを取得して、ページ上のコントロールに対する Ajax リクエストを開始する方法がわかりません。

私が調査したところ、ページに対して AjaxRequest または __doPostBack を開始する必要があります。後者は問題なく、実際にはページ全体を更新する必要があります。

私は、javascript/クライアント側プログラミングの経験がありません。ユーザー コントロールのボタンにアタッチしますか? コードビハインドの前にクライアントスクリプトを起動するようです。コード ビハインドは、更新が必要なコントロールにデータをロードするものです。そして、eventTarget パラメータのページ (またはページ上のパネル) の名前を取得する方法がわかりません。

どんな助けでも大歓迎です。

4

3 に答える 3

1

JavaScritp を使用せずに、1 回のポストバックでこれを行う簡単な方法があります。

Panel1 が、ユーザー コントロールのボタンがクリックされたときに更新するコンテナーであるとします。

Panel1 を

<asp:UpdatePanel runat="server" id="up1" UpdateMode="Conditional">
<ContentTemplate>
<asp:Panel id="Panel1" runat="server"></asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>

コード ビハインドで Update() メソッドを呼び出します (ボタンが既に呼び出しているハンドラー内)。更新するすべての個別のコンテナーに対して繰り返します。それがAJAXの仕組みです:)

于 2013-02-01T11:29:57.487 に答える
0

ユーザー コントロールのコード ビハインドで、次のようなプロパティを追加してみてください。

public string ButtonID {
  get { return ButtonControl.ClientID; }
}

そして、プログラムでエントリを RadAjaxManager に追加します。それが機能するかどうかはわかりません。回避策は、すべてのコンテンツを RadAjaxPanel にラップすることです。

于 2013-01-30T14:06:53.197 に答える