我有一个日历表,其中包含一个名为工作日的列,其中包含表示工作日的条目(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值,然后前面的代码无效。任何人都可以帮助我吗?
答案 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]));