将动态列表绑定到GridView

时间:2014-06-02 09:04:50

标签: c# visual-studio-2010 devexpress devexpress-windows-ui

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

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

请注意,我的偏好是尽可能减少代码。

谢谢!

1 个答案:

答案 0 :(得分:0)

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

  1. 创建一个包含两个属性的类Column和Value可以调用此类Item

  2. 创建另一个类ItemList,其中包含上述类(Item)的绑定列表

    class 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. 将项目读取为:

     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;
        }
    
  8. 这样我就可以检索包含列名称及其值的类Item的对象列表。这个解决方案适用于任何表,没有。列的类型没有预先定义。