我目前拥有带有字幕和列名的网格,从枚举中填充。
private enum enumCaptions
{
[Description("Status")]
Active,
[Description("Part number")]
Part,
[Description("Level")]
Change,
[Description("Project")]
Program,
[Description("Location")]
Location
}
允许我根据所选值读取描述的功能
public class classStatics
{
public static string GetEnumDescription(Enum value)
{
//method to read description of the enumeration
FieldInfo fi = value.GetType().GetField(value.ToString());
DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
if (attributes != null && attributes.Length > 0)
return attributes[0].Description;
else
return value.ToString();
}
}
这样做的方法,循环我的枚举并为列分配标题和名称
private void fillGridCaptions()
{
int i = 1;
grdMy.Cols.Count = Enum.GetValues(typeof(enumCaptions)).Length + 1;
foreach (int value in Enum.GetValues(typeof(enumCaptions)))
{
//assign name for every column from enum
grdMy.Cols[i].Name = Enum.GetName(typeof(enumCaptions), value);
//assign caption for every column
grdMy[0, i] = classStatics.GetEnumDescription((enumCaptions)value).ToString();
i++;
}
}
由于我有一些网格,但它们都应该有不同的数据和标题,我想创建通用函数,它将采用任何网格名称,任何枚举并为网格标题指定描述。 但是我获得描述的部分不再起作用了,enum captionsEnum不再被识别为Enum,但Name值正确返回。
private void gridCaptions(FlexGrid gridName, Enum captionsEnum)
{
int i = 1;
gridName.Cols.Count = Enum.GetValues(captionsEnum.GetType()).Length + 1;
foreach (int value in Enum.GetValues(captionsEnum.GetType()))
{
gridName.Cols[i].Name = Enum.GetName(captionsEnum.GetType(), value);
//assign caption for every column
gridName[0, i] = classStatics.GetEnumDescription(captionsEnum);
i++;
}
}
private void fillGridCaptions()
{
gridCaptionsgrdMy, new enumCaptions());
}
任何帮助将不胜感激。 谢谢。
答案 0 :(得分:0)
如果稍微修改了你的代码。我修改了以下几行:
value
从int
更改为object
,不存储数字,而是存储枚举中的实际项目。Enum
,因此可以调用该函数。当它是int
时,这是不可能的,因为枚举的类型在通用情况下是未知的。代码:
private void gridCaptions(FlexGrid anyGrid, Enum anyEnum)
{
int i = 1;
anyGrid.Cols.Count = Enum.GetValues(anyEnum.GetType()).Length + 1;
foreach (object value in Enum.GetValues(anyEnum.GetType()))
{
anyGrid.Cols[i].Name = value.ToString();
anyGrid[0, i] = classStatics.GetEnumDescription((Enum)value);
i++;
}
}