2011-10-31 40 views
0

我已经搜索了谷歌和StackOverflow的答案 - 已找到相关的主题,包括与similr标题的问题,但他们似乎有点超过我的头或不清楚。如何使用IListSource,IEnumerable或IDataSource

我想分配一个对象作为网格的数据源。我可以通过创建一个表,因此将值写入这样做:

Do FromVal(0) ToVal(ORD_Array.OrderList.Length - 1) Index(IX) 
ORD_Record = ORD_Array.OrderList[IX] 
Ord_BLTz00 = ORD_Record.BLTz00 
Ord_ORDz00 = ORD_Record.ORDz00 
Ord_BLTA00 = ORD_Record.BLTA00 
Ord_SHPA00 = ORD_Record.SHPA00 
Ord_SNAM00 = ORD_Record.SNAM00 

GridView1.DataSource = OrderMem.Dataset.Tables["OrdMf"] 
GridView1.DataBind() 
EndDo 

这工作,但我敢肯定,我可以分配ORD_Record直接作为数据源,除了第一个将其转换为有效的类型 - 否则我收到一个错误。有人可以解释我需要做什么来ORD_Record将其转换为可以绑定到datagrid的类型,从而避免创建表?

回答

1

你的代码在这个问题上有点混淆。您正在循环ORD_Array中的所有记录,但随后在每个循环中分配网格的数据源。此外,您已将问题标记为VB.Net,但您正在使用某些我无法识别的语法。但是,如果您希望ORD_Array中的每条记录都出现在网格中,那么您需要将GridView1 Dataxxx命令移出循环,并将DataSource分配给ORD_Array(可能实现IEnumerable)。

如果您只希望将ORD_Records中的一个分配给网格,那么您需要确定如何确定应该显示数组中的哪一个,将其从数组中提取出来并放入IEnumerable源中(您可以使用一个通用列表或甚至一个ArrayList),然后将其指定为GridView的DataSource。

更新与答案:

您也可以尝试的情况下,直接分配首先向ORD_Array.OrderList的数据源是枚举。

+0

不好意思 - 代码是用Visual .Net编写的.Net - VB.Net在语法上最接近它。 OrderList是一个对象数组,它是我的数据行。 Ord_BLTz00将是我创建的表中的一个字段,并且我正在为每个对象写一行。直接分配给我的错误。使用通用列表是我正在查找的信息。 – Brian

+1

我对Visual RPG一无所知,但在VB.Net中,您将Dim cRecords As New System.Collections.Generic.List(Of OrdRecordDataType)(不知道OrderList中的记录是什么数据类型),然后添加每个OrderList中的记录添加到cRecords集合中,然后将gridview数据源设置为cRecords。您也可以尝试将ORD_Array.OrderList直接分配给数据源,以防可枚举。 –

+0

将ORD_Array.OrderList直接赋值给数据源工作!谢谢你的帮助! - 我是新来的... – Brian

相关问题