动态添加复选框

时间:2013-06-24 06:27:56

标签: asp.net checkbox calendar dynamically-generated

我有一个日历表,其中包含一个名为工作日的列,其中包含表示工作日的条目(1或0)1和表示假日的0。现在,当我从数据库中获取数据时,我想显示复选框,其中假期已选中,其他未选中。例如,如果一个月6月返回的数据是1111100 ...则应取消选中前5个复选框,然后选中2个复选框,等等6月的30天。在我的网页中,我有2个文本框,以年和月为输入。当我搜索时,该月份应出现复选框。你能告诉我这个问题的代码。以下是我试过的代码。

  

public void search(object sender,EventArgs e)           {               尝试               {

            string cnnString = "Server=localhost;Port=3307;Database=leavesystem;Uid=root;Pwd=ashish";
            MySqlConnection cnx = new MySqlConnection(cnnString);
            cnx.Open();
            string cmdText = "Select WorkingDays from calender where Year = '" + year.Value +"' and Month = '" + month.Value +"' ";
            MySqlCommand cmd = new MySqlCommand(cmdText, cnx);
            MySqlDataAdapter adapter = new MySqlDataAdapter();
            DataSet ds = new DataSet();
            adapter.SelectCommand = cmd;
            string a[] = adapter.Fill(ds);

              int size = a.Length;
              CheckBox[] cbl = new CheckBox[size];
                   for (int i = 0; i < a.Length; i++)
                      {
                          cbl[i] = new CheckBox();
                          cbl[i].Text = a[i].ToString();
                          this.Form.Controls.Add(cbl[i]);  
                      } 
               }}
        catch (MySqlException ex)
        {

            string msg = "Insert Error: 'Error ' ";
            msg += ex.Message;
            throw new Exception(msg);
        }
    }

现在我收到了错误。首先,我无法在字符串数组a中获取adapter.fill值,然后前面的代码无效。任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

您可以创建CheckBoxList

<asp:CheckBoxList ID="checks" runat="server" RepeatDirection="Horizontal"/>

然后在代码背后:

char[] a=adapter.Fill(ds).ToString().ToCharArray();
ListItem[] items=new ListItem[a.Count()];
int i=0;
foreach (char m in a){
    items[i]=new ListItem(m.ToString());
    if(m=='0')
       items[i].Selected=true;
    else
       items[i].Selected=false;
    checks.Items.Add(items[i]);
    i++;
}

答案 1 :(得分:0)

首先需要将数据库表转换为字符串数组。

How to Convert the value in DataTable into a string array in c#

然后编写以下代码:

<asp:CheckBoxList ID="checkList" runat="server"/>
代码背后的代码:

for (int i = 0; i < a.Length; i++)
   checks.Items.Add(new ListItem(a[i]));