0

そこで、Ajax コントロール ツールキットの ModalPopupExtender コントロールを使用しています。targetControlID を Gridview 内のボタンに設定する場合、ボタンを保持するテンプレート内に ModalPopupExtender を配置する必要があることを理解しています。私の場合:

<asp:TemplateField>
           <ItemTemplate>
               <asp:LinkButton ID="lbtnDeleteWidget" runat="server" Text="Delete" CommandName="DeleteWidget" CommandArgument="<%# Container.DataItemIndex %>"></asp:LinkButton>
           </ItemTemplate>
           <FooterStyle HorizontalAlign="Right" />
           <FooterTemplate>
           <asp:Button ID="btnAddNewWidget" runat="server" CssClass="buttonStyle" Text="Add New Widget" onclick="btnAddNewWidget_Click"/>

           <ajaxToolkit:ModalPopupExtender ID="ModalPopupExtender1" runat="server"
           BackgroundCssClass="modalBackground"
           DropShadow="true"
           OkControlID="btnSaveWidget"
           CancelControlID="aCloseX"
           PopupControlID="Panel1"
           TargetControlID="btnAddNewWidget" /> 
      </FooterTemplate>
</asp:TemplateField>

現在、これはうまく機能しており、ボタンを押すとモーダルポップアップが表示され、すべて問題ありません。ただし、ModalPopUpExtender には、ポストバック時にモーダルを閉じるという厄介な習慣があります。私のポップアップには、ポストバックを実行する必要があるいくつかの DropDownLists が含まれています (関連するコードを実行する必要があります)。これが発生するたびに、モーダルが閉じます。

これに対する (醜い) 回避策は、show() 関数を使用することです。たとえば、ドロップダウン リストがポストバックを実行するたびに、関数は ModalPopupExtender1.Show(); で終了します。

問題:

ModalPopupExtender1 は、機能するようにテンプレート フィールド内で定義したため、現在のコンテキストには存在しません。これを修正するにはどうすればよいですか? ModalPopupExtender1 を参照し、.show() 関数を使用してポストバックの問題を処理したいと考えています。

4

2 に答える 2

1

このように、ネストされたモーダル ポップアップ エクステンダーを検索します。

VB.NET

Dim ModalPopupExtender1 = CType(YourGridView.FooterRow.Findcontrol("ModalPopupExtender1"), AjaxControlToolkit.ModalPopupExtender)
ModalPopupExtender1.Show()

C#

AjaxControlToolkit.ModalPopupExtender ModalPopupExtender1 = (AjaxControlToolkit.ModalPopupExtender)YourGridView.FooterRow.Findcontrol("ModalPopupExtender1");
ModalPopupExtender1.Show();

これにより、項目テンプレートに隠されている埋め込みコントロールが表示されます。これが機能するかどうか教えてください。

于 2013-05-02T13:42:18.413 に答える
0

modalpopup をグリッド コントロールの外に配置することもできます。グリッドの外側であれば問題なく動作します。

また、modalpopup.show() メソッドを直接記述して modalpopup を再度表示することができる findcontrol を使用する必要はありません。

これを試してみてください。これは間違いなく機能します。

于 2013-05-02T14:42:13.363 に答える