0

将动态列表绑定到 C# 中的 GridView (devexpress) 的最佳方法是什么。通过说动态列表,我的意思是每次用户从 GUI 中选择一些值时,都会在不同表的数据库上执行选择查询。该表因每个用户选择的值而异,因此没有。并且返回列的类型不固定。

我做了一些搜索,发现字典是一个不错的选择,但有没有更好的解决方案?任何人都可以提供一些粗略的步骤,说明如何将字典从 db 获取数据绑定到 gridview(不需要确切的代码)。

也请不要说我的偏好是尽可能减少代码。

谢谢!

4

1 回答 1

0

所以我终于找到了解决方案,并想在这里分享,以防有人需要。这就是我所做的:

  1. 创建了一个包含两个属性 Column 和 Value 的类,让我们调用这个类 Item

  2. 创建了另一个类ItemList,它实现了上述类(Item)的绑定列表

    类 ItemList : System.ComponentModel.BindingList< 项目 >

  3. 类 ItemList 有两个变量 _tableName 和 _primaryKey

  4. 用户执行ItemList 类的GetList(string TableName) 函数并传递tablename。

  5. GetList 执行 SQL 查询,表名称作为参数传递给此函数

    ct.Append(" SELECT * ");
    ct.AppendLine(" FROM ");
    ct.AppendLine(TableName);
    

    ......

  6. 将 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)))); } }

  7. 项目类中的 GetItem:

        internal static Item GetItem(string column, string value)
        {
            Item item = new Item();
            item._column = column;
            item._value = value;
            return item;
        }
    

通过这种方式,我能够检索包含列名称及其值的 Item 类对象列表。该解决方案适用于任何表格,但不适用。并且列的类型没有预先定义。

于 2014-06-05T12:24:26.680 回答