C#学习教程:如何将自定义枚举描述绑定到DataGrid中indelv.com/data-binding-enum.html"]描述标记教程[/URL]。我有一个WindowsSQLServer数据库,我从中提取数据(作为整数,然后将castine转换为枚举),然后绑定到数据网格。我不想拉取和包装枚举类型,而是想显示与其关联的描述标签。这是ASP–没有要显示的语句。这是绑定的代码–[代码]privatevoidBindData(){IStatementDaostatementDao=DaoFactory.GetStatementDao();列表语句;if(Page.Request.RawUrl.Contains("Gateway")){statements=statementDao.GetAll();StatementGrid.HeaderStyle.CssClass="GatewayGridHeader";StatementGrid.AlternatingRowStyle.CssClass="GatewayGridAlternatingRow";}else{//这永远不应该达到,但它让编译器开心!!statements=statementDao.GetAll();}StatementGrid.DataSource=报表;StatementGrid.DataBind();显示类型描述符();}[/码]这是枚举的类–[码]publicenumTypeOfStatement{[EnumDescription("Dress代码")]DressCode=1,[EnumDescription("午餐时间")]LunchTime=2,[EnumDescription("Footwarez")]Footware=3,[EnumDescription("achtung")]Warning=4,[EnumDescription("Banarna")]Banana=5,[EnumDescription("Apfel")]Apple=6};c#[/code]显然可以编写一个广泛的方法来做我想做的事,但是有更简洁的方法动态包装它们并巧妙地改变您对SelectedItem的处理(或您正在使用的任何内容)我的示例使用已经存在的Description属性publicclassDescriptiveEnumwhereT:struct{privatestaticreadonlyDictionarydescriptions=newDictionary();staticDescriptiveEnum(){foreach(FieldInfofieldintypeof(T).GetFields(BindingFlags.Static|BindingFlags.GetField|BindingFlags.Public)){descriptions.Add((T)field.GetRawConstantValue(),LookupName(field));}}publicreadonlyT值;publicDescriptiveEnum(Tvalue){this.Value=value;}publicoverridestringToString(){strings;if(!descriptions.TryGetValue(this.Value,outs)){//返回未声明的字段s=this.Value.ToString();描述[this.Value]=s;}返回s;}privatestaticstringLookupName(FieldInfofield){object[]all=field.GetCustomAttributes(typeof(DescriptionAttribute),false);if(all.Length==0)returnfield.Name;//fallbackelsereturn((DescriptionAttribute)all[0]).Description;//只需要一个}publicstaticBindingList>Make(IEnumerablesource){varlist=newBindingList>();foreach(varxinsource)list.Add(newDescriptiveEnum(x));返回列表;}}示例用法:以上就是C#学习教程:如何将自定义枚举描述绑定到DataGrid分享的数据上的全部内容,如果对你有用,需要进一步了解C#学习教程,希望你将更加关注它——publicenumFoo{[Description("flibble")]Bar,[Description("wobble")]Baz,//不存在,将使用名称Bat}Formf=newForm();f.Controls.Add(newListBox(){Dock=DockStyle.Fill,DataSource=DescriptiveEnum.Make(newFoo[]{Foo.Bar,Foo.Baz,Foo.Bat}),});应用程序运行(f);本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: