2017-09-03 19 views
1

私は項目テンプレート列に2つのチェックボックスがあるaspxページにDetailsViewを持っています。私はDetailsViewの外にbuttounを持っています。私が必要とするのは、ボタンをクリックすると、両方のチェックボックスがオンになっているかどうかを確認し、C#コマンドを起動するかどうかを確認する必要があります。助けてください。私は以下のコードを貼り付けてみましょう:DetailsView内のC#CheckBox

.aspxの

<div> 
     <asp:Button ID="Button3" runat="server" Text="Button" OnClick="Button3_Click" /> 
    </div> 
    <asp:DetailsView ID="DetailsView2" runat="server" Height="50px" Width="125px" AutoGenerateRows="False" DataSourceID="SqlDataSource2"> 
     <Fields> 
      <asp:TemplateField HeaderText="StudentName" SortExpression="StudentName"> 
       <ItemTemplate> 
        <asp:CheckBox ID="CheckBox1" runat="server" /> 
        <asp:Label ID="Label1" runat="server" Text='<%# Bind("StudentName") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="Email" SortExpression="Email"> 

       <ItemTemplate> 
        <asp:CheckBox ID="CheckBox2" runat="server" /> 
        <asp:Label ID="Label2" runat="server" Text='<%# Bind("Email") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </Fields> 
    </asp:DetailsView> 

C#

protected void Button3_Click(object sender, EventArgs e) 
    { 

    } 

答えて

0

DetailsViewは、行の数に制限はなく、1つだけ保持することができ、データバインドコントロールです。

あなたは、両方のチェックボックスがチェックされていることを確認したい場合は、各行に、あなたはDetailsViewのすべての行を反復処理する必要があるだろう、と各行にFindControlからCheckBoxをキャスト:

protected void Button3_Click(object sender, EventArgs e) 
{ 
    for (int i = 0; i < DetailsView2.Rows.Count; i++) 
    { 
     CheckBox chk1 = (CheckBox)DetailsView2.Rows[i].FindControl("CheckBox1"); 
     CheckBox chk2 = (CheckBox)DetailsView2.Rows[i].FindControl("CheckBox2"); 

     if (chk1.Checked && chk2.Checked) 
     { 
      // Do Stuff 
     } 
    } 
} 

の場合あなたはすべてのチェックボックスがすべての行でcheckesがあるを検証したい、次の操作を行います。

protected void Button3_Click(object sender, EventArgs e) 
{ 
    // Declare a boolean flag 
    bool AllCheckBoxesAreChecked = true; 

    for (int i = 0; i < DetailsView2.Rows.Count; i++) 
    { 
     CheckBox chk1 = (CheckBox)DetailsView2.Rows[i].FindControl("CheckBox1"); 
     CheckBox chk2 = (CheckBox)DetailsView2.Rows[i].FindControl("CheckBox2"); 

     if (!chk1.Checked || !chk2.Checked) 
      AllCheckBoxesAreChecked = false; 
    } 

    // Now use the flag 
    if (AllCheckBoxesAreChecked) 
    { 
     // Do Stuff 
    } 
} 
関連する問題