我想做个注册页面,多个CheckBox被选中后写入数据库的问题!
拍摄类别 []新闻 []体育 [] 人物人像 [] 财经 []广告 []数码 []其他
常用器材 []传统相机 []徕卡 []福伦达 []哈苏 []海鸥 []其他
数码相机 [] 柯达 []松下 []佳能 []尼康 []其他
页面要用到的复选框的样子就如上面的那样,请问如何来把选中的写入到数据库,可以多选,然后维护个人信息的时候怎样按原来选中的方式显示出来呢?
已经想了好长时间了,还是不知道怎么弄,期盼高手能帮忙解决!谢谢了,虽然分不多,但是也只能给这么多了,没办法.
------解决方案--------------------我来简单说一下
比如:
数码相机 [] 柯达 []松下 []佳能 []尼康 []其他
在数据库中的字段是 数码相机 存储类型用varchar[5]即00000
然后第一个字符(从左往右) 代表柯达 第二个松下 第三个佳能...
在页面文件
建一个空字符串
StringBuilder foo = new StringBuilder( "00000 ");
//using System.Text;
//stringbuilder 在Text命名空间中.
//用stringbuilder ,string型不允许直接修改字符数组
if(checkbox柯达.checked==true)
{
foo[0]= '1 '; //注意 是单引号
}
...
最后保存时foo.ToString()转换位字符串存入数据库
从数据库读取到字符串后 再一位一位的判断.
if(foo[0]== '1 ')
{
checkbox柯达.checked=true;
}
....
------解决方案--------------------1。界面显示
CheckBoxList1.DataSource = ds.Tables[0];//所有选项存到数据库
CheckBoxList1.DataTextField = "name ";
CheckBoxList1.DataValueField = "id ";
CheckBoxList1.DataBind();
2。保存到数据库
string name = " ";
for (int i = 0; i < CheckBoxList1.Items.Count; i++)
{
if (CheckBoxList1.Items[i].Selected)
{
name+= CheckBoxList1.Items[i].Value + "| ";
}
}
if (name!= " ")
{
name = name.Substring(0, otherdept.Length - 1);
}
然后把name保存到你的表的一列里。
3。从数据库读取
string name=从数据库读取保存的那列。
string[] names;
names= name.Split( '| ');
for (int i = 0; i < names.Length; i++)
{
CheckBoxList1.Items.FindByValue(names[i]).Selected = true;
}