日期:2014-05-18  浏览次数:20822 次

我想做个注册页面,多个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;
}