如何使用所有可能的SeriesChartType选项填充下拉框?

时间:2011-03-25 15:42:10

标签: asp.net drop-down-menu asp.net-charts

我希望使用每个可能的SeriesChartType填充一个下拉框,以便我的用户可以选择合适的图表类型。

如何遍历SeriesChartType集合(位于名称空间System.Web.Ui.DataVisualization.Charting中)并返回每个可能的选项,以便将其添加到下拉框中?

感谢。

4 个答案:

答案 0 :(得分:1)

foreach (ChartType in Enum.GetValues(typeof(System.Web.UI.DataVisualization.Charting))
{
    //Add an option the the dropdown menu
    // Convert.ToString(ChartType) <- Text of Item
    // Convert.ToInt32(ChartType) <- Value of Item
}

如果这不是你想要的,请告诉我。

答案 1 :(得分:1)

您可以绑定DataBind事件处理程序中的数据:

public override void DataBind()
{
    ddlChartType.DataSource =
        Enum.GetValues(typeof(SeriesChartType))
            .Cast<SeriesChartType>()
            .Select(i => new ListItem(i.ToString(), i.ToString()));
    ddlChartType.DataBind();
}

然后在SelectedIndexChanged事件处理程序中检索所选值,如下所示:

protected void ddlChartType_SelectedIndexChanged(object sender, EventArgs e)
{
    // holds the selected value
    SeriesChartType selectedValue = 
         (SeriesChartType)Enum.Parse(typeof(SeriesChartType),  
                                     ((DropDownList)sender).SelectedValue);
}

答案 2 :(得分:1)

这在VB中对我有用 - 我必须实例化SeriesChartType的新实例,这允许我使用[Enum].GetNames方法。

然后我就可以将它们添加到下拉框中,如下所示:

Dim z As New SeriesChartType  
For Each charttype As String In [Enum].GetNames(z.GetType)  
    Dim itm As New ListItem  
    itm.Text = charttype  
    ddl_ChartType.Items.Add(itm)  
Next

感谢大家的回答。 mrK有一个很好的C代替这个VB代码。

答案 3 :(得分:0)

这是一个通用功能:

// ---- EnumToListBox ------------------------------------
//
// Fills List controls (ListBox, DropDownList) with the text 
// and value of enums
//
// Usage:  EnumToListBox(typeof(MyEnum), ListBox1);

static public void EnumToListBox(Type EnumType, ListControl TheListBox)
{
    Array Values = System.Enum.GetValues(EnumType);

    foreach (int Value in Values)
    {
        string Display = Enum.GetName(EnumType, Value);
        ListItem Item = new ListItem(Display, Value.ToString());
        TheListBox.Items.Add(Item);
    }
}