前日遇到了把复选框保存至数据库的问题,当时用的方法极其的“丑陋”,现更正。用一个TextBox来暂存数值,权当是对数据库的读写。
按钮Get事件如下:
//通过复选框当前状态取得相应数值
protected void bnGetCheckBox_Click(object sender, EventArgs e)
...{
int result = 0;
for (int counter = 0; counter < cbl.Items.Count; counter++)
...{
//如果counter项为选中状态,则将result相应位置为1
if (cbl.Items[counter].Selected == true)
...{
int temp = 1;
temp = temp << counter;
result = result | temp;
}
}
tbResult.Text = result.ToString();
}按钮Set事件如下:
//通过数值设置复选框状态
protected void bnSetCheckBox_Click(object sender, EventArgs e)
...{
//取值
int input;
if (!Int32.TryParse(tbResult.Text, out input))
input = 0;
//设置
for (int counter = 0; counter < cbl.Items.Count; counter++)
...{
//将1左移counter位,用于检查
int temp = 1;
temp = temp << counter;
//如果给定数值中第counter位值为1,则将相应CheckBox设为选中
if ((temp & input) == temp)
cbl.Items[counter].Selected = true;
}
}
本文介绍了如何优化存储复选框状态到数据库的过程,通过使用一个TextBox作为临时存储,代替了原本不理想的做法。在按钮的Get和Set事件中分别处理读取和写入数据库的操作。
2万+

被折叠的 条评论
为什么被折叠?



