我有一个复选框列表,我想将其Checked项插入数据库; 我用了这段代码:
for (int i = 0; i < checkBox_service.Items.Count; i++)
{
if (checkBox_service.Items[i].Selected == true)
{
strcheck += "" + checkBox_service.Items[i].ToString() + ",";
}
}
在数据库中显示
System.Web.UI.WebControls.CheckBoxList
在CheckBox字段中而不是Selected项目。根据输入的所有其他字段都有正确的数据... 我无法找到任何错误,请指导我......
答案 0 :(得分:1)
使用错误的toString方法。使用checkBox_service.Items[i].SelectedValue
或checkBox_service.Items[i].SelectedItem.Text
或checkBox_service.Items[i].SelectedItem.Value
答案 1 :(得分:0)
创建一个表,你有一个布尔值。并将值true或false存储在数据库中。 如果选中则为true,未选中则为false
答案 2 :(得分:0)
使用LINQ,您可以轻松获取所选项目的所有值,然后将所有选定项目连接到一个字符串:
var selectedValues = from i in checkBox_service.Items.Cast<ListItem>()
where i.Selected
select i.Value;
var strcheck = String.Join(",", selectedValues);
请记住 - 这将适用于简单的值(例如字符串)。如果将复选框列表绑定到某些复杂对象,则值将是您定义为DataValueFiled
的属性。例如。使用此数据绑定
checkBox_service.DataSource = new[] {
new Fruit { Id = 1, Name = "Apple" },
new Fruit { Id = 2, Name = "Banana" },
new Fruit { Id = 3, Name = "Peach" }
};
checkBox_service.DataTextField = "Name";
checkBox_service.DataValueField = "Id";
checkBox_service.DataBind();
如果您选择第一个和第三个项目,结果字符串将为"1,3"
。如果您需要获取连续文字,请选择Text
属性而不是Value
,结果将为"Apple,Peach"
。