我有一个由ListItem列表填充的复选框列表,每个ListItem都有文本和类似“8”或“5”的值。
但是我意识到CheckBox没有值,它的值是否被检查。
var listType = SettingsManager.Get("CRMCaseTypes");
var listStatus = SettingsManager.Get("CRMStatusReasons");
var listTypeItems = ParseSettingList(listType);
var listStatusItems = ParseSettingList(listStatus);
cblCRMType.DataSource = listTypeItems;
cblCRMType.DataBind();
cblCRMStatus.DataSource = listStatusItems;
cblCRMStatus.DataBind();
foreach (Control c in cblCRMStatus.Controls)
{
CheckBox cb = c as CheckBox;
if(cb != null && cb.(value........)
}
有什么方法可以在每个复选框中存储一个值,并在用户点击提交后在代码中再次使用它吗?
由于
答案 0 :(得分:1)
是的,你可以。您可以向CheckBox
添加自定义属性。您可以使用HTML5数据属性,这样您的HTML将是HTML5有效的:
集
foreach (Control c in cblCRMStatus.Controls)
{
CheckBox cb = c as CheckBox;
if(cb != null)
{
cb.Attributes.Add("data-MyField", myFieldVal);
}
}
提取
foreach (Control c in cblCRMStatus.Controls)
{
CheckBox cb = c as CheckBox;
if(cb != null && cb.Attributes["data-MyField"].ToString())
{
// do something
}
}
答案 1 :(得分:0)
您想要多久使用它?如果要暂时存储它,可以使用会话。如果要将其存储时间更长,请将其保存到数据库或文件中。
答案 2 :(得分:0)
您可以从复选框所绑定的列表中提取值,并根据复选框的索引引用相关的列表项。
答案 3 :(得分:0)
您可以将其添加为属性 -
SET:
myCheckBox.Attributes.Add("myKey","myValue");
GET:
var myKey = myCheckBox.Attributes["myKey"] != null ? myCheckBox.Attributes["myKey"].ToString() : "";
答案 4 :(得分:0)
有什么方法可以在每个复选框中存储一个值,并在用户点击提交后在代码中再次使用它吗?
您可以将其设置为会话
Session["CbxList"] = YourCheckBoxList;
然后,当您想要引用它时,只需添加以下内容:
if (Session["CbxList"] != null)
{
YourCheckBoxList = Session["CbxList"] as CheckBoxList;
}
并使用。
如果您或其他任何人不熟悉会话,我会附上会话链接: http://msdn.microsoft.com/en-us/library/ms178581(v=vs.100).aspx
答案 5 :(得分:0)
您需要查看Items集合,而不是Controls集合:
foreach (ListItem item in cblCRMStatus.Items)
{
string value = item.Value;
}
答案 6 :(得分:0)
尽管可能不再需要OP我会添加我的答案,因为这个帖子仍然在Google中排名很高。如果这是ASPxCheckBox
,您可以使用JSProperties
字典来存储您的值,如下所示:
cb.JSProperties["cpMyValue"] = "MyValue";
我通常会使用来自ASPxGridView
或CallbackPanel
的回调来将其恢复到服务器端(这稍微超出了原始问题的范围)。