将动态列表绑定到 C# 中的 GridView (devexpress) 的最佳方法是什么。通过说动态列表,我的意思是每次用户从 GUI 中选择一些值时,都会在不同表的数据库上执行选择查询。该表因每个用户选择的值而异,因此没有。并且返回列的类型不固定。
我做了一些搜索,发现字典是一个不错的选择,但有没有更好的解决方案?任何人都可以提供一些粗略的步骤,说明如何将字典从 db 获取数据绑定到 gridview(不需要确切的代码)。
也请不要说我的偏好是尽可能减少代码。
谢谢!
将动态列表绑定到 C# 中的 GridView (devexpress) 的最佳方法是什么。通过说动态列表,我的意思是每次用户从 GUI 中选择一些值时,都会在不同表的数据库上执行选择查询。该表因每个用户选择的值而异,因此没有。并且返回列的类型不固定。
我做了一些搜索,发现字典是一个不错的选择,但有没有更好的解决方案?任何人都可以提供一些粗略的步骤,说明如何将字典从 db 获取数据绑定到 gridview(不需要确切的代码)。
也请不要说我的偏好是尽可能减少代码。
谢谢!
所以我终于找到了解决方案,并想在这里分享,以防有人需要。这就是我所做的:
创建了一个包含两个属性 Column 和 Value 的类,让我们调用这个类 Item
创建了另一个类ItemList,它实现了上述类(Item)的绑定列表
类 ItemList : System.ComponentModel.BindingList< 项目 >
类 ItemList 有两个变量 _tableName 和 _primaryKey
用户执行ItemList 类的GetList(string TableName) 函数并传递tablename。
GetList 执行 SQL 查询,表名称作为参数传递给此函数
ct.Append(" SELECT * ");
ct.AppendLine(" FROM ");
ct.AppendLine(TableName);
......
将 Items 中的结果读取为:
if (dataReader.Read())
{
for (int i = 0; i < dataReader.FieldCount;i++ )
{
dataReader.GetName(i);
dataReader.GetValue(i);
this.Add(TreeItemInfo.GetItem(Convert.ToString(dataReader.GetName(i)),
Convert.ToString(dataReader.GetValue(i)))); } }
项目类中的 GetItem:
internal static Item GetItem(string column, string value)
{
Item item = new Item();
item._column = column;
item._value = value;
return item;
}
通过这种方式,我能够检索包含列名称及其值的 Item 类对象列表。该解决方案适用于任何表格,但不适用。并且列的类型没有预先定义。