2011-06-28 82 views
2

我有一個複選框列表中有3個項目。我想將複選框列表中的所有選中值複製到一個字符串中。我嘗試了下面的代碼,但它沒有給出正確的結果。 任何人都可以幫助我。複選框列表選中的值

<asp:checkboxlist id="interestedIN" runat="server" repeatlayout="table" 
    cellspacing="3" cellpadding="3" Font-Size="12px"> 
    <asp:ListItem id= "social" runat="server" text=" Sociology" Selected="false" /> 
    <asp:ListItem id="zoo" runat="server" text=" Zoology " Selected="false" /> 
    <asp:ListItem id="math" runat="server" text=" mathematics " Selected="false" /> 
</asp:checkboxlist> 

這裏是C#,我實現:

foreach (ListItem li in interestedIN.Items) 
     { 
      if (li.Selected) 
      { 
       interestIN = interestedIN.SelectedItem.Value + "," + interestIN; 
      } 
     } 

輸出:如果用戶選擇了社會學和動物,我想有輸出作爲「社會學,動物學」 但我上面的代碼給我追隨結果「社會學,社會學」。

回答

-2

使用以下命令:

Boolean addSeperator = false; 

foreach (ListItem li in interestedIN.Items) 
{ 

    if (addSeperator) 
    { 
     interestIN += ", "; 
     addSeperator = false; 
    } 
    if (li.Selected) 
    { 
     interestIN += li.Text; 
     addSeperator = true; 
    } 
} 
2
var selectedValues = 
    (from item in interestedIN.Items.Cast<ListItem>() where item.Selected select item.Text).ToArray(); 
var selectedValuesJoined = string.Join(",", selectedValues); 
7

我創建了一個自定義的CheckBoxList與這個屬性。把它放在控件中很好,所以你不必每次都寫代碼。自定義控件允許您引用四個屬性:

  • SelectedValuesString - 以逗號分隔的所選值的字符串。
  • SelectedValuesAsIntegers - 整數所選值的列表。
  • SelectedValuesAsStrings - 一個字符串所選值的列表。
  • SelectedItemTextAsStrings - 所選項目文本的字符串列表。

這裏是SelectedValuesAsString屬性。

public string SelectedValuesString 
{ 
    get 
    { 
     return String.Join(",",this.Items.Cast<ListItem>().Where(i => i.Selected).Select(i=>i.Value)); 
    } 
} 

要查看自定義CheckBoxList控件後,看到http://www.foliotek.com/devblog/extended-checkboxlist-control/

5

希望下面的功能將幫助您得到的結果

for (int i = 0; i < interestedIN.Items.Count; i++) 
{ 
    if (interestedIN.Items[i].Selected) 
    { 
     values += interestedIN.Items[i].Value + ","; 
    } 
} 

values = values.TrimEnd(','); 
1

我知道這個問題已經很老了,但我有一個解決方案。您的問題在於您正在查看列表控件的選定項目,根據列表控件運行時的狀態,列表控件的狀態可能並非您所需。您需要查看當前正在迭代的項目並從中獲取文本值。

string interestIN = String.Empty; 

foreach (ListItem li in interestedIN.Items) 
{ 
    if (li.Selected) 
    { 
     interestIN += li.Text + ", "; 
    } 
} 

我的代碼有一個問題,即最後一個項目都會有一個結尾逗號,但你可以找出如何剝離了這一點。這會讓你99%。

1

作出納尼亞的出色答卷稍有變化使用C#擴展方法:

public static class ExtendedCheckBoxList 
{ 

    public static string SelectedValuesAsCommaDelimmittedString(this CheckBoxList thatCheckBoxList) 
    { 

     List<string> selectedValuesAsStrings = thatCheckBoxList.SelectedValuesAsStrings(); 

     string commaDelimmittedStringOfValues = String.Join(",", selectedValuesAsStrings); 

     return commaDelimmittedStringOfValues; 
    } 


    public static List<string> SelectedValuesAsStrings(this CheckBoxList thatCheckBoxList) 
    { 
      List<string> selectedValuesAsStrings = thatCheckBoxList 
                   .Items 
                   .Cast<ListItem>() 
                   .Where(i => i.Selected) 
                   .Select(i => i.Value) 
                   .ToList(); 

      return selectedValuesAsStrings; 
    } 
} 
+1

決定今天把你超過1000 ...哈哈哈!^_- – SeanKendle