当前位置: 首页 > 编程语言 > C#

WinFormsDataGridView-数据绑定到具有列表属性(可变列数)的对象share

时间:2023-04-10 13:28:50 C#

WinFormsDataGridView-数据绑定到具有列表属性(可变列数)的对象要在DataGridView中显示,默认数据绑定——将DGV的数据源设置为一个对象——产生所需内容的90%(即它正确输出公共属性,我可以轻松添加排序)。但是,我需要绑定的属性之一是一个列表,其中包含需要位于其他数据绑定项之后的单独列中的数据。我坚持如何最好地实现这一目标。我的课看起来像这样:publicclassBookDetails{publicstringTitle{get;放;}publicintTotalRating{得到;放;}publicintOccurrence{get;放;}publicListRating{get;放;理想情况下,我可以将Rating属性扩展到多个数字列以在运行时提供如下输出:Title|TotalRating|Occurrence|R1|R2|R3...RN计算总评分也很有用所有个人评级的总和是的,但我现在手动更新该评级没问题。像这样?以上就是C#学习教程分享的全部内容:WinFormsDataGridView-数据绑定到具有列表属性(可变列数)的对象。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注——usingSystem.Collections;使用System.Collections.Generic;使用System.ComponentModel;使用System.Linq;使用System.Windows.Forms;公共类BookDetails{公共字符串标题{得到;放;}publicintTotalRating{得到;放;}publicintOccurrence{get;放;}publicListRating{get;放;}}classBookList:List,ITypedList{publicPropertyDescriptorCollectionGetItemProperties(PropertyDescriptor[]listAccessors){varorigProps=TypeDescriptor。));ListnewProps=newList(origProps.Count);属性描述符doThisLast=null;foreach(PropertyDescriptorpropinorigProps){if(prop.Name=="Rating")doThisLast=prop;否则newProps.Add(prop);}if(doThisLast!=null){varmax=(frombookinthisletrating=book.Ratingwhererating!=nullselect(int?)rating.Count).Max()??0;if(max>0){//希望它可以为空以解决锯齿状数组TypepropType=typeof(int?);//也可以从Listin//一般情况下算出这一点,但是让它可以为空for(inti=0;i{1,2,1}},newBookDetails{Title="def",TotalRating=3,Occurrence=2,Rating=null},newBookDetails{Title="ghi",TotalRating=3,Occurrence=2,Rating=newList{3,2}},newBookDetails{Title="jkl",TotalRating=3,Occurrence=2,Rating=newList()},};Application.Run(newForm{Controls={newDataGridView{Dock=DockStyle.Fill,DataSource=data}}});}}本文收集自网络且不代表立场,如涉及侵权,请点击右侧联系管理员删除,如需转载请注明出处: