2011-07-01 11 views
0

私は私の最後の質問で言った、この1つには、基本的に私のユーザー名は私の経験を反映していると言います!ModalPopupExtenderは、DropDownListをクリックしていない場合、Selected Index changedイベントでのみ表示されますか?

現在、2つのリストビューを持つページがあります。そのうちの1つには、InsertItemテンプレートにいくつかのコントロールがあります。

特に、これらのコントロールの1つはDDLであり、モーダルポップアップエクステンダーに接続されています。特定の値(インデックスではない)が選択されている場合にのみ、MPEをトリガーしたいと思います。私はここまでです!

DropDownList ExpenseTypeDDL = 
    (DropDownList) Expenses.InsertItem.FindControl("ExpenseTypeDDL"); 
int ExpenseType = (Int32.Parse(ExpenseTypeDDL.SelectedValue.ToString())); 

if (ExpenseType == 1) 
{ 
    AjaxControlToolkit.ModalPopupExtender mpeMiles = 
     (AjaxControlToolkit.ModalPopupExtender)Expenses.InsertItem. 
     FindControl("mpeMiles"); 
    mpeMiles.Show(); 
} 

は、上記DDLSelectedIndexChangedイベントの内容です。このDDLは、費用の種類に基づいています。特定の値(dbプライマリキー)をターゲットにして、モーダルポップアップを表示して、ユーザーがマイレージを入力してから後で他のものを実行できるようにします。ここで

がある私のMPEは、すぐにDDLをクリックすると表示されますが、私はそれが1

の選択した値のためにのみ発生します現時点では、MPE

<cc1:ModalPopupExtender ID ="mpeMiles" TargetControlID ="ExpenseTypeDDL" 
    runat="server" DropShadow="true" PopupControlID="pnlMiles" 
    BackgroundCssClass="modalBackground" /> 
<asp:Panel CssClass="modalPopup" ID="pnlMiles" runat="server" 
    Height="170px"> 
    <div style="padding: 5px; text-align:center"> 
     <asp:Label ID="lblStart" runat="server">Start location.</asp:Label> 
     <asp:TextBox ID="txtLocationStart" runat="server" /> 
     <asp:RequiredFieldValidator ID="reqLocation" runat="server" 
      ErrorMessage="You must enter a start location" 
      ControlToValidate="txtLocationStart" Display="Dynamic" Text="*" > 
     </asp:RequiredFieldValidator> 
     <asp:Label ID="lblDestination" runat="server">Destination.</asp:Label> 
     <asp:TextBox ID="txtDestination" runat="server" /> 
     <asp:RequiredFieldValidator ID="reqDestination" runat="server" 
      ErrorMessage="You must enter a destination" 
      ControlToValidate="txtDestination" Display="Dynamic" Text="*" > 
     </asp:RequiredFieldValidator> 
     <asp:Label ID="lblMiles" runat="server">Please enter your Mileage</asp:Label> 
     <asp:RequiredFieldValidator ID="reqMileage" runat="server" 
      ErrorMessage="You must enter your mileage" ControlToValidate="txtMiles" 
      Display="Dynamic" Text="*" ></asp:RequiredFieldValidator> 
     <asp:TextBox ID="txtMiles" runat="server" /> 
     <br /> 
     <br /> 
     <asp:Button ID="btnMiles_OK" runat="server" Text="Save" 
      CausesValidation="false" /> 
     <asp:Button ID="btnMiles_Cancel" runat="server" Text="Cancel" 
      CausesValidation="false"/> 
    </div> 
</asp:Panel> 

ことができる誰かしてください私が間違っていることを教えてください。ターゲット・インデックスが変更されるたびので、ダイアログが表示されている - あなたのモーダルポップアップエクステンダのターゲットとしてDDLを設定しているので、

TIA

dotnetnewb

+0

JavaScriptの呼び出しでポップアップエクステンダーを表示する方がいいでしょう。 –

+0

それは、ますます多くの人々が私に言っていることです、私は当面JSに触れないように指示されています。 – dotnetnewb

答えて

1

これが起こっています。解決策は、非表示のボタンがあり、それをモーダルポップアップエクステンダのターゲットコントロールにすることです.DDLに自動ポストバックがtrueの場合、サーバーサイドコードが選択されたインデックスをチェックしてダイアログをポップアップします。

ユーザーエクスペリエンスの観点からは、ページ上にUpdatePanelがない限り、これはDDLの変更時にページが更新され、ダイアログが表示されることを意味します。また、ポップアップを行うことなく、DDLで選択されたインデックスの変更を表示/非表示するために、モーダルポップアップのJavaScript APIを使用することもできます。たとえば、

$find('mpeMiles').show(); 
+0

VinayCが大変助かりました。私が取り組んでいるのは実際のプロジェクトですが、それはトレーニングの練習でもあり、私はJS(今のところ)を避けるように指示されています。私はmpeMiles.Hide()を持っています。リストビューのバインドメソッドでは、ページに静的なパネルが表示されます – dotnetnewb

関連する問題