0

我有一个由 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........)
}

有什么方法可以在每个复选框中存储一个值,并在用户单击提交后在后面的代码中再次使用它?

谢谢

4

7 回答 7

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
   }
}
于 2013-04-11T18:04:55.450 回答
0

你想多长时间重复使用它?如果要临时存储,可以使用 session. 如果要存储更长时间,请将其保存到数据库或文件中。

于 2013-04-11T17:56:10.743 回答
0

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

于 2013-04-11T17:59:08.060 回答
0

您可以将其添加为属性 -

放:

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

得到:

var myKey = myCheckBox.Attributes["myKey"] != null ?  myCheckBox.Attributes["myKey"].ToString() : "";
于 2013-04-11T17:59:24.300 回答
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

于 2013-04-11T19:29:03.797 回答
0

您需要查看 Items 集合,而不是 Controls 集合:

    foreach (ListItem item in cblCRMStatus.Items)
    {
        string value = item.Value;
    }
于 2013-04-11T20:31:12.377 回答
0

尽管 OP 可能不再需要我的答案,但我会添加我的答案,因为该线程在 Google 中的排名仍然很高。如果这是一个,ASPxCheckBox您可以使用JSProperties字典来存储您的值,如下所示:

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

然后,我通常会使用来自 a 的回调ASPxGridViewCallbackPanel将其返回到服务器端(这稍微超出了原始问题的范围)。

于 2013-10-09T13:41:36.647 回答