2016-04-26 16 views
2

GridViewに3つのチェックボックスがありますが、ユーザは1つのチェックボックスしか選択できません。最初のチェックボックスを選択すると、他の2つのチェックボックスを選択できないことを知らせる必要があります。GridViewのチェックボックスにチェックが入っているかどうかチェックします

 <asp:GridView CssClass="tblResults" runat="server" ID="dgDetails" 
       OnRowDataBound="dgDetails_ItemDataBound" 
       DataKeyField="ID" AutoGenerateColumns="false" 
      AlternatingRowStyle-BackColor="#EEEEEE"> 
      <HeaderStyle CssClass="tblResultsHeader" /> 
       <Columns> 
        <asp:TemplateField HeaderText="Approved1"> 
         <ItemTemplate> 
          <asp:CheckBox runat="server" ID="chkApproved1" /> 
         </ItemTemplate> 
        </asp:TemplateField> 
        <asp:TemplateField HeaderText="Approved2"> 
         <ItemTemplate> 
          <asp:CheckBox runat="server" ID="chkApproved2" /> 
         </ItemTemplate> 
        </asp:TemplateField> 
        <asp:TemplateField HeaderText="Approved3"> 
         <ItemTemplate> 
          <asp:CheckBox runat="server" ID="chkApproved3" /> 
         </ItemTemplate> 
        </asp:TemplateField> 
        </Columns> 
      </asp:GridView> 

背後にあるコード:

protected void dgDetails_ItemDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      GridView gv = sender as GridView; 
      Quote.QuoteDetails qd = e.Row.DataItem as Quote.QuoteDetails; 

      CheckBox chkApproved1 = e.Row.FindControl("chkApproved1") as CheckBox; 
      CheckBox chkApproved2 = e.Row.FindControl("chkApproved2") as CheckBox; 
      CheckBox chkApproved3 = e.Row.FindControl("chkApproved3") as CheckBox; 
     } 
    } 

私は、クエリでこのようなものを使用してみました:

$('#<%= chkApproved1.ClientID %>').change(function() { 
       if($(this).is(":checked")) { 

        } 
      }); 

しかし、それはエラーの原因:名 'chkApproved1は' 現在に存在しません。コンテキスト。

GridViewのチェックボックスにチェックが入っているかどうかを確認するにはどうすればいいですか?

+0

のみ公開ページメンバーが<%=...%>トークン内でアクセス可能です。チェックボックスのコントロール修飾子をpublicに変更してください。 –

+0

クラスをチェックボックスに適用し、クラス別にクラスを選択しました - グリッドビューで動的に作成され、助けを借りて – Aristos

答えて

3

アラートに最初のチェックボックスを使用して、以下のスクリプトをチェックされている場合

$(document).ready(function() {  

     $("table[id$='dgDetails']").find("input[id*='chkApproved1']").change(function() { 
        if ($(this).is(":checked")) { 
         alert('Hi'); 
        } 
       }); 
    }); 

を与えたい場合はここでは最初にチェックされているかどうかを確認するために、他のチェックボックスを防ぐのに役立ちますコードです。

   if ($(this).is(":checked")) {      
        if ($(this).attr("id").indexOf("chkApproved1") != -1) { var1 = 1 } 
        if ($(this).attr("id").indexOf("chkApproved2") != -1) { var2 = 1 } 
        if ($(this).attr("id").indexOf("chkApproved3") != -1) { var3 = 1 } 
        if (var1 == 1 && var2 == 1 && var3 == 1) { 
         var2 = 0; var3 = 0; 
         $("table[id$='dgDetails']").find("input[id*='chkApproved2']").attr("checked", false); 
         $("table[id$='dgDetails']").find("input[id*='chkApproved3']").attr("checked", false); 
        } 
        else if (var1 == 1 && var2 == 1) { 
         if ($(this).attr("id").indexOf("chkApproved1") != -1) { var1 = 0 } 
         if ($(this).attr("id").indexOf("chkApproved2") != -1) { var2 = 0 } 
         alert('You can\'t select this checkbox2'); 
         $(this).attr("checked", false); 
        } 
        else if (var1 == 1 && var3 == 1) { 
         if ($(this).attr("id").indexOf("chkApproved1") != -1) { var1 = 0 } 
         if ($(this).attr("id").indexOf("chkApproved3") != -1) { var3 = 0 } 
         alert('You can\'t select this checkbox3'); 
         $(this).attr("checked", false); 
        } 
       } 
       else { 
        if ($(this).attr("id").indexOf("chkApproved1") != -1) { var1 = 0 } 
        if ($(this).attr("id").indexOf("chkApproved2") != -1) { var2 = 0 } 
        if ($(this).attr("id").indexOf("chkApproved3") != -1) { var3 = 0 } 
       } 

・ホープ、このヘルプ

+0

を事前に作成していないため、IDを見つけることができません。しかし、どのようにして2番目のチェックボックスをチェックしようとしても、最初のチェックボックスがチェックされているかどうかを確認する方法はありますか?彼らは一度に1つしかチェックすることができません – user123456789

+0

@ user123456789この '.find(" input [id * = 'chkApproved1'] ")'を 'this'に変更しようとします.find( "input [id * = 'chkApproved']" ) 'これが動作するかどうか私に教えてください。 – Ansari

+0

'var1 = 0、var2 = 0、var3 = 0'のような変数を使用して、対応する値を' 1'にしてから3つを比較することができます。 indexOf( "chkApproved1")!= - 1){var1 = 1} ' – Ansari

関連する問題