如何从c#.net中的单列数据中选择多个复选框

时间:2017-09-27 13:54:26

标签: c# mysql asp.net checkbox

我正在尝试制作一个餐馆表格,当用户订购食物时,该表格将数据存储到数据库中。如果用户再次来到并输入他的姓名,则应自动提交其他数据,如食物和提货选项。对于食物,我有一个复选框。

这是插入代码:

string strCheckValue = "";
if (CheckBox1.Checked)
{
    strCheckValue = strCheckValue + "," + CheckBox1.Text;
}
if (CheckBox2.Checked)
{
    strCheckValue = strCheckValue + "," + CheckBox2.Text;
}
if (CheckBox3.Checked)
{
    strCheckValue = strCheckValue + "," + CheckBox3.Text;
}
if (CheckBox4.Checked)
{
    strCheckValue = strCheckValue + "," + CheckBox4.Text;
}
if (CheckBox5.Checked)
{
    strCheckValue = strCheckValue + "," + CheckBox5.Text;
}
if (CheckBox6.Checked)
{
    strCheckValue = strCheckValue + "," + CheckBox6.Text;
}
if (CheckBox7.Checked)
{
    strCheckValue = strCheckValue + "," + CheckBox7.Text;
}

strCheckValue存储在数据库中,并给出如下结果: 下,咖喱角,布瑞雅尼,烤饼

现在我想要在用户点击食物按钮时选择用户之前选择的所有食物项目。

为此我的代码是:

//checkbox value display
CheckBox1.Checked = false;
CheckBox2.Checked = false;
CheckBox3.Checked = false;
CheckBox4.Checked = false;
CheckBox5.Checked = false;
CheckBox6.Checked = false;
CheckBox7.Checked = false;
string aa = dr["ctm_food"].ToString();
string[] a = aa.Split(',');
Label10.Text = a[2].ToString();
foreach (Control cc in this.Controls)
{
    if(cc is CheckBox)
    {
        CheckBox b = (CheckBox)cc;
        for(int j=1; j<a.Length; j++)
        {
            if (a[j].ToString() == b.Text)
            {
                b.Checked = true;
            }
        }
    }
}

在label10中,我可以看到用户订购的食物。但该复选框未被选中。完成这项工作的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

我相信this.Controls不包含您的复选框。如果您将所有复选框引用保留在一个位置,它还会简化您的代码。

CheckBox[] checkboxes = new CheckBox[] {
    CheckBox1, CheckBox2, CheckBox3, CheckBox4, CheckBox5, CheckBox6, CheckBox7
};

string aa = dr["ctm_food"].ToString();
string[] a = aa.Split(',');
Label10.Text = a[2].ToString();

foreach (CheckBox b in checkboxes) {
    b.Checked = false;
    for (int j = 1; j < a.Length; j++) {
        if (a[j].ToString() == b.Text) {
            b.Checked = true;
        }
    }
}