2011-03-29 26 views
4

私は、その列の1つにドロップダウンリストを持つASPグリッドビューを動的に(その行を追加できるように)しています。データ入力中のドロップダウンリストの選択に応じて、列内のテキストボックスを有効または無効にするアクションを実行したいと考えています。ドロップダウンリストを持つAsp.netの動的グリッド

ご協力いただければ幸いです。

答えて

3

これはjQueryで簡単に行うことができます。ちょっとした変更を加えれば、あなたが望むように正確に動作させることができます。あなたのGridViewを作成し、テキストボックスやドロップダウンリストのテンプレート列を追加、

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function() { 
    $(".ddlClass").change(function() { 
     var txt = $(this).closest("tr").find(".txtClass"); 
     if ($(this).val() == 0) { 
     txt.css("background", "#cccccc"); 
     txt.attr("disabled", "disabled"); 
     } 
     else { 
     txt.css("background", "#ffffff"); 
     txt.attr("disabled",""); 
     } 
    }); 
}); 

次へ:

まず、あなたの<head>タグに以下を追加します。以下のコードでは、ドロップダウンリストにクラス "ddlClass"が与えられ、テキストボックスにクラス "txtClass"が与えられていることに注目してください。これらはあなたが適切と考えるように変更することができます。

<asp:gridview runat="server" ID="gvw" AutoGenerateColumns="false"> 
      <Columns> 
       <asp:BoundField DataField="field1" /> 
       <asp:BoundField DataField="field2" /> 
       <asp:TemplateField HeaderText="Name"> 
        <ItemTemplate> 
         <asp:TextBox runat="server" ID="txtName" CssClass="txtClass"></asp:TextBox> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:TemplateField> 
        <ItemTemplate> 
         <select class="ddlClass"> 
          <option value="1">Enabled</option> 
          <option value="0">Disabled</option> 
         </select> 
        </ItemTemplate> 
       </asp:TemplateField> 
      </Columns> 
     </asp:gridview> 

.ready関数は、クラス「ddlClass」を持つ各ドロップダウンリストにclickイベントを関連付けます。コードを変更すると、ドロップダウンリストと同じ行に「txtClass」というクラスのテキストボックスがあり、それに応じて有効/無効になります。

+0

うわー、私は感銘を受けました。それはJQueryの本当に素晴らしい使い方です私は、.closestと.findコマンドについて知りませんでした。 –

+0

ありがとうございます。このソリューションは私のためにうまくいきます。課題は、フォーム上の日付ピッカーとグリッド列のいずれかの他のものと競合することです。同じクラスのメソッドを使用して、グリッド内のテキストボックスにカレンダーの日付ピッカーをページロード時にアタッチすることはできますか? –

+0

間違いなく可能ですが、私たちはあなたのaspxページからコードを見る必要があります。私はあなたが新しい質問を開き、あなたが使用している正確なコードを投稿することをお勧めします。それはあなたがやっていることの感覚を得るための最善の方法であり、それから私たちはあなたに最高の答えを与えることができます。 –

1

よく知っていれば、Javascriptを使用することができます。 DOMを横断するためのクエリ言語としてJQueryを使用することをお勧めします。

しかし、あなたはJavascriptに精通していないならば、私はあなたのDropDownListコントロールにSelectionChangedEventを追加し、SelectionChangedEventハンドラのあなたのページの背後にあるコードにお勧めします: のDropDownListに送信者オブジェクトをキャストして、その親を取得GridViewRowになるオブジェクト。

GridViewRowを使用すると、FindControlメソッドを使用して同じ行のTextBoxへの参照を取得し、それを有効または無効にすることができます。

ドロップダウンリストの選択を変更するたびに、ページをリフレッシュ(ポストバック)したくない場合は、グリッドをUpdatePanelでラップします。

これで苦労している場合は、上記の解決策の1つにコードを投稿してください。あなたに最も快適なものを教えてください。

+0

エヴァンありがとうございました。私は上記のjavascriptソリューションを使用し、それは実際に私のためにうまく動作します。課題は、フォーム上の日付ピッカーとグリッド列のいずれかの他のものと競合することです。同じ 'クラス'メソッドを使用して、カレンダーの日付ピッカーをグリッドのテキストボックスにページロード時に添付することはできますか? –

関連する問題