2017-09-03 4 views
1

항목 템플릿 열에 두 개의 확인란이있는 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 행의 제한이 아니라 하나를 보유 할 수있는 데이터 바인딩 컨트롤입니다.

둘 다 체크 박스가 각 행에 체크되었는지 확인하려면, 당신은 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 
    } 
}