我希望使用每个可能的SeriesChartType
填充一个下拉框,以便我的用户可以选择合适的图表类型。
如何遍历SeriesChartType
集合(位于名称空间System.Web.Ui.DataVisualization.Charting
中)并返回每个可能的选项,以便将其添加到下拉框中?
感谢。
答案 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);
}
}