GridView.DataSource=IList

本文介绍了如何将IList类型数据集绑定到GridView,并展示了具体的代码实现。通过调整DataField属性匹配IList中的属性名称,成功实现了数据展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原先一直都是在Web页面里直接从数据库里读信息到DataSet里,

然后  GridView.DataSource=DataSet,

而对于GridView里显示列的绑定也是根据Web页面的SQL语句的返回字段设置,

比如sql语句为"select id,name from users",那么在GridView里如果要显示id和name,就需要在GridView里绑定id和name,如下所示:

今天尝试将一个IList类型的数据集绑定到GridView.DataSource,

Sql语句依然是select id,name from users,但是此次并不是直接获取,而是先将获取的id和name赋值给一个user类的两个属性userid和username,然后将user类添加到一个IList,再将IList绑定给DataSource,代码如下:

 

如果GridView在绑定数据时,还是如上面所示,datafield为id和name,那就会报错,说“在选定的数据源上未找到名为“id”的字段或属性。”。

解决办法,将GridView的DataField字段改为userid和username,如下所示:

也就是GridView要根据IList里的字段来绑定,而从GetNoticeList函数里可以看到IList里是以notice类为单位添加的,因此GridView的DataField字段要根据sql字段绑定到的notice类里的属性字段来定。

System.NotSupportedException HResult=0x80131515 Message=此方法显式使用的 CAS 策略已被 .NET Framework 弃用。若要出于兼容性原因而启用 CAS 策略,请使用 NetFx40_LegacySecurityPolicy 配置开关。有关详细信息,请参见 http://go.microsoft.com/fwlink/?LinkID=155570。 Source=mscorlib StackTrace: 在 System.Security.SecurityManager.ResolvePolicy(Evidence evidence) 在 DevExpress.Data.Helpers.SecurityHelper.IsPermissionGranted(IPermission permission) 在 DevExpress.Data.Helpers.SecurityHelper.get_IsPartialTrust() 在 DevExpress.Data.Helpers.DataViewDataControllerHelper.InitFastGetRow() 在 DevExpress.Data.Helpers.DataViewDataControllerHelper..ctor(DataControllerBase controller) 在 DevExpress.Data.DataControllerBase.CreateHelper() 在 DevExpress.Data.DataControllerBase.OnListSourceChanged() 在 DevExpress.Data.DataControllerBase.SetListSourceCore(IList value) 在 DevExpress.Data.DataControllerBase.SetListSource(IList value) 在 DevExpress.Data.CurrencyDataController.OnCurrencyManagerChanged() 在 DevExpress.Data.CurrencyDataController.set_CurrencyManager(CurrencyManager value) 在 DevExpress.Data.CurrencyDataController.OnDataSourceChanged() 在 DevExpress.Data.CurrencyDataController.SetDataSource(BindingContext context, Object dataSource, String dataMember) 在 DevExpress.XtraGrid.Views.Base.BaseView.SetDataSource(BindingContext context, Object dataSource, String dataMember) 在 DevExpress.XtraGrid.GridControl.ActivateDataSource() 在 DevExpress.XtraGrid.GridControl.set_DataSource(Object value) 在 ScadaIvGraphicEdit.EditForm.ReadLayerSetting() 在 D:\UGit\utdrawtool\drawtool-dotnet2.0\图形平台\ScadaIvGraphicEdit\ScadaIvGraphicEdit\EditForm.cs 中: 第 12926 行 在 ScadaIvGraphicEdit.EditForm.xtraTabControl_SelectedPageChanged(Object sender, TabPageChangedEventArgs e) 在 D:\UGit\utdrawtool\drawtool-dotnet2.0\图形平台\ScadaIvGraphicEdit\ScadaIvGraphicEdit\EditForm.cs 中: 第 7603 行 在 DevExpress.XtraTab.XtraTabControl.OnSelectedPageChanged(Object sender, ViewInfoTabPageChangedEventArgs e) 在 DevExpress.XtraTab.ViewInfo.BaseTabControlViewInfo.OnSelectedPageChanged(IXtraTabPage prevPage) 在 DevExpress.XtraTab.ViewInfo.BaseTabControlViewInfo.set_SelectedTabPage(IXtraTabPage value) 在 DevExpress.XtraTab.ViewInfo.BaseTabControlViewInfo.OnPageAdded(IXtraTabPage page) 在 DevExpress.XtraTab.XtraTabControl.OnTabPageAdded(XtraTabPage page) 在 DevExpress.XtraTab.XtraTabControl.OnTagPagesCollectionChanged(Object sender, CollectionChangeEventArgs e) 在 DevExpress.XtraTab.XtraTabPageCollection.RaiseCollectionChanged(CollectionChangeEventArgs e) 在 DevExpress.XtraTab.XtraTabPageCollection.OnInsertComplete(Int32 position, Object value) 在 System.Collections.CollectionBase.System.Collections.IList.Add(Object value)
最新发布
06-14
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值