2014-09-06 32 views
1

我試圖將複選框列表值設置爲單個字符串。在ASP.net中使用C#。獲取複選框列表值爲單個字符串

這是我的代碼.. 我已經宣佈這是全球性的。

string hobbies = ""; 

這是代碼獲取所選項目的字符串。

protected void chkListHobbies_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     for (int i=0;i<chkListHobbies.Items.Count;i++) 
     { 
     if (chkListHobbies.Items[i].Selected) 
     {     
      hobbies += chkListHobbies.Items[i].Value + ","; 
      } 

    } 
    hobbies = hobbies.TrimEnd(','); 

我按鈕顯示此點擊

 protected void btnEnter_Click(object sender, EventArgs e) 
    { 
     Response.Write("Hobbies= "+hobbies); 
    } 

它沒有得到所需要的輸出。 如果錯誤或想知道如何正確執行,希望得到更正。 在此先感謝。

回答

1

您必須在您的btnEnter_Click事件處理程序中創建愛好列表,因爲Asp.net webforms處於無狀態狀態,並且每次回發後都會得到一個新的愛好變量。爲了解決這個問題,你必須以某種方式保存興趣愛好狀態(使用視圖狀態或隱藏字段)並稍後使用它,或者按照我的建議在btnEnter_Click中創建愛好列表。

編輯(舉例):

1.Do在整個事件中btnEnter_Click:

protected void btnEnter_Click(object sender, EventArgs e) 
    { 
     string hobbies = ""; 
     for (int i=0;i<chkListHobbies.Items.Count;i++) 
     { 
     if (chkListHobbies.Items[i].Selected) 
     {     
      hobbies += chkListHobbies.Items[i].Value + ","; 
      } 

    } 
    hobbies = hobbies.TrimEnd(','); 
    Response.Write("Hobbies=" + hobbies); 

2.使用ViewState的:

private string hobbies 
{ 
    get { return (ViewState["hobbies"] ?? "").ToString(); } 
    set { ViewState["hobbies"] = value; } 
} 

和你的代碼的其餘部分是完全相同。

+0

任何代碼示例? – chathwind 2014-09-06 08:22:03

+0

非常感謝..它的工作原理... – chathwind 2014-09-06 08:28:52