2013-04-11 102 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回調得到這個回到服務器端(這稍微超出了原始問題的範圍)。