2009-07-23 35 views
1

私は、いくつかのアイテムを含むリピーターを持っています。その中には、ドロップダウンリストとボタンがあります。Repeaterコントロール内のDropDownListアイテムを選択します。

ここでの目標は、DDLの項目を選択したリピータ行に関連付けることです。

ASPXコード:

<asp:Repeater ID="sharedPlansList" runat="server" 
    onitemdatabound="sharedPlansList_ItemDataBound" 
    onitemcommand="sharedPlansList_ItemCommand"> 
    <ItemTemplate> 
     <div> 
      <h1>&middot; <%# Eval("ProductName") %></h1> 
      <div> 
      Associer le domaine : 
      <asp:DropDownList runat="server" ID="domainList" /> 
      <asp:Button ID="associateDomaine" Text="Associer" runat="server" 
       CommandArgument='<%# Container.DataItem %>' /> 
      </div> 
      <div> 
       Domaines : 
       <asp:BulletedList runat="server" ID="sharedPlanDomains" /> 
      </div> 
     </div> 
    </ItemTemplate> 
</asp:Repeater> 

問題:

私は無効なポストバックまたはコールバックの例外(無効なポストバックまたはコールバック引数それぞれの時間を持って、ボタンをクリックすると、イベントの検証は、構成で使用して有効になっています。または<%@ Page EnableEventValidation = "true"%>をページ内に作成するセキュリティ上の理由から、この機能はポストバックまたはコールバックイベントの引数が元々レンダリングされたサーバーコントロールから発生するかどうかを検証します。 ClientScriptManager.RegisterForEventValidationメソッドの確認のためにポストバックまたはコールバックデータを登録する。 )。しかし、すべては本当にエキゾチックなものがなければ、本当に標準的なようです。私はjavascriptで何もコントロールを追加しません。

私はあなたがweb.config<pages enableEventValidation="false" />を入れる可能性のあるソリューションを見てきましたが、asp.netビルトインセキュリティモデルを維持しておきたいので、それは良い解決策ではありません。

回避策はありますか?

+0

CommandArgument/Nameは実際に動作しますか?私は何か似たようなものを持っているので、私はそれをまったく動作させることができません!コマンド引数を完全に無視します。 – Sebastian

答えて

0

あなたのコードを少しテストすることなく(これはすぐにはできません)、私は確信することはできませんが、ボタンに割り当てる動的CommandArgumentが原因であるかどうかを確認できますか?あなたがそれを取り出すと、エラーは投げられるのですか?その場合は

は、あなたがOnItemDataBoundハンドラ内の各行を処理しようと最善の解決策は、あなた自身のDropDownListでDropDownListコントロールを置き換えることになります

ClientScript.RegisterForEventValidation("associateDomaine", -->CommandArgHere<--); 
+0

CommandArgumentを追加する前からエラーが発生しているため、リンクされていません。/ – Erick

0

呼び出すことができます。 DropDownListのサブクラスを作成し、そのリストをASPXページで使用します。あなたのDropDownListの内容はクライアント側で変更されていると思います(Javascriptでは?)。

関連する問題