Listitems和if语句与图表

时间:2014-04-28 18:34:26

标签: c# asp.net

我有一个图表,我希望能够根据复选框列表添加或删除行。 为此我想出了这段代码:

        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";
        }
    }

在页面加载时,图表上没有任何内容显示(按照需要)。然而,一旦点击任何一个项目,所有系列不仅显示我点击的那个为什么?

2 个答案:

答案 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;
}