我有一个图表,我希望能够根据复选框列表添加或删除行。 为此我想出了这段代码:
foreach (ListItem lstitem in CBLYear.Items)
{
if (lstitem.Value == "2014")
{
Chart3.Series["2014"].XValueMember = "Month";
Chart3.Series["2014"].YValueMembers = "2014";
}
if (lstitem.Value == "2013")
{
Chart3.Series["2013"].XValueMember = "Month";
Chart3.Series["2013"].YValueMembers = "2013";
}
if (lstitem.Value == "2012")
{
Chart3.Series["2012"].XValueMember = "Month";
Chart3.Series["2012"].YValueMembers = "2012";
}
if (lstitem.Value == "2011")
{
Chart3.Series["2011"].XValueMember = "Month";
Chart3.Series["2011"].YValueMembers = "2011";
}
if (lstitem.Value == "2010")
{
Chart3.Series["2010"].XValueMember = "Month";
Chart3.Series["2010"].YValueMembers = "2010";
}
if (lstitem.Value == "2009")
{
Chart3.Series["2009"].XValueMember = "Month";
Chart3.Series["2009"].YValueMembers = "2009";
}
}
在页面加载时,图表上没有任何内容显示(按照需要)。然而,一旦点击任何一个项目,所有系列不仅显示我点击的那个为什么?
答案 0 :(得分:0)
您正在迭代整个项目集合,因此当然每个系列都会显示出来。
您需要检查"已选择"财产而不是。您可以使用LINQ轻松完成此操作:
foreach (ListItem lstitem in CBLYear.Items.Where(l => l.Selected))
{
....
}
请参阅MSDN文档:CheckBoxList(特别是"简介"部分)
答案 1 :(得分:0)
你需要在第二个条件下使用else if
,你应该在你的代码中使用switch语句检查很多条件,在switch中它只会执行特定的情况
switch(Convert.ToString(lstitem.Value))
{
case"":
{
// put all your conditions in cases
}
break;
default :
break;
}