2014-03-29 15 views
-2
StringBuilder sbOccupation = new StringBuilder(); 
foreach (ListItem li in cblOccupation.Items) 
{ 
    if (li.Selected) 
    { 
     sbOccupation.Append(li.Text); 
     sbOccupation.Append(","); 
    } 
} 
property.Occupation=sbOccupation.ToString().Remove(sbOccupation.ToString().LastIndexOf(","), 1); 
+1

有什么问题吗? –

回答

2

如果没有复选框被选中,然后

li.Selected是每个

li in cblOccupation.Items假,然后

.LastIndexOf(","), 1)产生错误,因为

sbOccupation.Append(",");

从来没有发生过。

1

如果没有已追加到sbOccuption,那么这将是空的 - 所以LastIndexOf(',')将返回-1,这不是有效的第一个参数string.Remove

既然你知道它永远是结果的最后一个字符,你可以只使用:

if (sbOccuptation.Length > 0) 
{ 
    // Trim the trailing comma 
    sbOccupation--; 
} 
string text = sbOccupation.ToString(); 

然而,这将是简单的只是使用string.Join和LINQ:

// This replaces *all* your code 
property.Occupation = string.Join(",", cblOccuptation.Items 
                .Cast<ListItem>() 
                .Where(li => li.Selected) 
                .Select(li => li.Text)); 

如果您使用.NET 3.5,您将需要Select调用后ToArray一个电话,不过这也够简单。

相关问题