Как я могу заполнить раскрывающийся список всеми возможными опциями SeriesChartType? - PullRequest
2 голосов
/ 25 марта 2011

Я хочу заполнить раскрывающийся список каждым возможным SeriesChartType, чтобы мои пользователи могли выбрать подходящий тип диаграммы.

Как я могу перебрать коллекцию SeriesChartType (она находится в пространстве имен System.Web.Ui.DataVisualization.Charting) и вернуть каждый возможный вариант, чтобы я мог добавить его в выпадающий список?

Спасибо.

Ответы [ 4 ]

1 голос
/ 25 марта 2011

Это сработало для меня в 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-коду.

1 голос
/ 25 марта 2011

Вы можете связать данные в обработчике событий 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);
}
1 голос
/ 25 марта 2011
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
}

Если это не то, что вы ищете, дайте мне знать.

0 голосов
/ 25 марта 2011

Вот общая функция:

// ---- 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);
    }
}
...