2011-08-05 16 views
0

リピータのItemTemplateにCheckBoxと無効なTextBoxがあります。このアイデアを実装する必要があります:CheckBoxがチェックされている場合のみTextBoxが有効になります。CheckBox AutoPostBackをtrueで、このコードをItemDataBoundに配置しようとしました。しかし、私は同じコードを使用してループ "MyRptr.Item [i] .FindControl ...."を使用しているので、奇妙な私のコントロールを見つけることができませんし、それは動作します! ..私はすべての項目をループしたくない、私はちょうど私がチェックボックスが作成された項目番号または場所を知ることができますしたい。また、CheckBoxのCheckedChangedイベントのイベントハンドルを作成しようとしましたが、CheckBoxも見つかりませんでした。リピータ内にあるCheckBoxにアクセスする

protected void MyRptr_ItemDataBound(object sender, RepeaterItemEventArgs e) 
     { 
      CheckBox ChkBx = e.Item.FindControl("IsSelected_ChkBx") as CheckBox; 
      if (ChkBx.Checked == true) 
      { 
       TextBox TxtBx = e.Item.FindControl("Value_TxtBx") as TextBox; 
       TxtBx.Enabled = true; 
      } 
     } 


<asp:Repeater ID="MyRptr" runat="server" 
      onitemdatabound="MyRptr_ItemDataBound"> 
       <ItemTemplate> 
        <asp:CheckBox ID="IsSelected_ChkBx" runat="server" Text='<%# Eval("Item") %>' AutoPostBack="True" OnCheckedChanged="IsSelected_ChkBx_CheckedChanged" /> 
        &nbsp;<asp:TextBox ID="Value_TxtBx" runat="server" Enabled="false"></asp:TextBox> 
        <asp:HiddenField ID="ID_HdnFld" runat="server" Value='<%# Eval("ID") %>' /> 
       </ItemTemplate> 
       <SeparatorTemplate> 
        <br></br> 
       </SeparatorTemplate> 
      </asp:Repeater> 

だから、基本的に私はそれは素晴らしいことだ何が起こっているかについての説明なので、任意のアイデアを=取得することができれば、私は私のロジックを実装するためのクリーンでシンプルな方法を必要として)?

答えて

0

従うとしてあなたのテキストボックスを見つけることができますが、私はその優れた

protected void IsSelected_ChkBx_CheckedChanged(object sender, EventArgs e) 
{ 
    var ch = (CheckBox)sender; 
    var txt = ch.Parent.FindControl("Value_TxtBx") as TextBox; 
} 
+0

代わりに、サーバー側のイベントのjQueryのを使用します(Y)パーフェクト.. ..)=働いたことと、私はjQueryのまたはJavaScriptを考えると思います一般的にはより良いでしょう、あなたはそれで私を助けることができますか? – lKashef

+0

@IKashef:このページを見て、http://api.jquery.com/closest/ – Peyman

+0

私はJQueryやJavaScriptを使ったことがありません。私は誰かが私のためにコードを書くことを許可していませんが、私はこれまでにこれを使用したことはありません! – lKashef

関連する問題