2013-04-11 80 views
0

我有一个ListItem列表填充的复选框列表,每个ListItem都具有文本和像“8”或“5”的值。存储一个aspx复选框的值?

但我意识到一个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

“cblCRMStatus”是什么类? – 2013-04-11 18:43:23

回答

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 
    } 
} 
+0

我怎么会数据绑定我没有控制? – jmasterx 2013-04-11 18:17:46

+0

你可以发布'cblCRMStatus'的ASPX吗? – 2013-04-11 18:24:20

0

你想重新使用它多久?如果你想临时存储它,你可以使用会话。如果您想更长时间地存储它,请将其保存到数据库或文件中。

+0

我基本上对存储文本不感兴趣,每次用户单击提交时,我都感兴趣存储Value foreach checked复选框...文本属性很容易重复... 值是数据库中的状态... – jmasterx 2013-04-11 17:57:58

0

您可以从复选框绑定到的列表中拉出值,并根据复选框的索引引用相关列表项。

0

你可以将其添加为一个属性 -

SET:

myCheckBox.Attributes.Add("myKey","myValue"); 

GET:

var myKey = myCheckBox.Attributes["myKey"] != null ? myCheckBox.Attributes["myKey"].ToString() : ""; 
0

是否有某种方式,我可以在每个复选框的值存储和使用再次在用户点击提交后的代码后面?

if (Session["CbxList"] != null) 
{ 
YourCheckBoxList = Session["CbxList"] as CheckBoxList; 
} 

及用途:

,当你想引用它只是添加以下你可以将其设置为一个会话

Session["CbxList"] = YourCheckBoxList; 

然后。

我已经包含了链接的情况下,会议你或其他人不熟悉它们: http://msdn.microsoft.com/en-us/library/ms178581(v=vs.100).aspx

0

你需要看的资料收集,而不是控件集合:

foreach (ListItem item in cblCRMStatus.Items) 
    { 
     string value = item.Value; 
    } 
0

尽管OP可能不再需要,但我会添加我的答案,因为此线程在Google中的排名依然很高。如果这是一个ASPxCheckBox你可以使用JSProperties字典来存储你的值(一个或多个),像这样:

cb.JSProperties["cpMyValue"] = "MyValue"; 

然后,我会经常使用从ASPxGridViewCallbackPanel回调得到这个回到服务器端(这稍微超出了原始问题的范围)。