我需要使用'for'循环来检查是否勾选了复选框值。
CheckBox chkBox = (CheckBox)tab_patients.Controls[chk + i];
从搜索我得到这一行。这个tab_patients表示什么?`
string chk = "CheckBox";
for (int i = 1; i < 13; i++)
{
for (int k = 1; k < 4; k++)
{
// CheckBox chkBox = (CheckBox)tab_patients.Controls[chk + i];
CheckBox cb = (CheckBox)this.Page.Form.FindControl("chk"+i.ToString());
if(cb.Checked==true)
{
check = i + "0" + k;
}
}}
答案 0 :(得分:1)
让您的生活更轻松,并使用复选框列表创建复选框:http://msdn.microsoft.com/de-de/library/system.web.ui.webcontrols.checkboxlist.aspx
<asp:CheckBoxList ID="SomeElement" runat="server"
AutoPostBack="true"
RepeatColumns="4"
EnableViewState="true">
</asp:CheckBoxList>
使用Repeatcolumns属性告诉元素,您实际上需要4列,因此控件将您的32个元素除以4,并将这些复选框按8包分组。
在此之后,您可以遍历每个列表:
foreach(var cb in checkboxlistID)
{
if(cb.Checked)
{
//do something
}
}
最重要的是,这里有一些旧代码,向您展示如何使用从SQL查询中获取的数据填充复选框列表。您可以忽略if表达式,它检查是否存在缓存数据,从中填充所有复选框。
using (OleDbConnection connection = new OleDbConnection(ConfigurationManager.ConnectionStrings["database"].ConnectionString))
{
string Query = @"SELECT * from level";
OleDbCommand command = new OleDbCommand(Query, connection);
if (Session["SavedLevelItems"] != null)
{
CheckBoxListLevel.Items.Clear();
List<ListItem> SessionList = (List<ListItem>)Session["SavedLevelItems"];
foreach (var item in SessionList)
{
try
{
CheckBoxListLevel.Items.Add(item);
}
catch { }
}
}
else
{
connection.Open();
CheckBoxListLevel.DataTextField = "bez_level";
CheckBoxListLevel.DataValueField = "id_level";
OleDbDataReader ListReader = command.ExecuteReader();
CheckBoxListLevel.DataSource = ListReader;
CheckBoxListLevel.DataBind();
ListReader.Close(); ListReader.Dispose();
}
}