我的aspx页面中有一个DetailsView,项目模板列中有两个复选框。我在DetailsView外面有一个buttoun。我需要的是当我点击按钮它应该验证是否选中了两个复选框并激活c#命令。请帮忙。让我粘贴下面的代码:
的.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 :(得分:0)
DetailsView
是一个数据绑定控件,可以容纳无限数量的行,而不只是一行。
如果要验证两个复选框都已选中,则在每一行中,您需要遍历所有DetailsView
的行,并从CheckBox
转换FindControl
每一行:
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
}
}
}
如果您要验证所有行中的所有复选框,请执行以下操作:
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
}
}