如何将ReadOnlyCollection <t>绑定到DataGridView

时间:2017-10-27 16:58:33

标签: c# .net datagridview binding

我正在使用一个名为ClearSCADA的Schneider产品,它允许您通过.Net接口查询其专有的后端数据库。我已成功使用此查询查询数据库:

    SELECT
        "Id", "FullName", "Foreground", "Blink", "Background", "TypeDesc", "MemoryUsage"
    FROM
        "CCustomColour"
    ORDER BY
        "FullName" ASC

并将结果作为QueryResult返回给我:

    using System.Collections.ObjectModel;

    namespace ClearScada.Client.Advanced
    {
        //
        public class QueryResult
        {
            //
            // Summary:
            //     Gets the results of the query.
            public ReadOnlyCollection<QueryRow> Rows { get; }
            //
            // Summary:
            //     Gets the number of rows affected for a DML query.
            public int RowsAffected { get; }
            //
            // Summary:
            //     Gets the status of the query.
            public QueryStatus Status { get; }
        }
    }

我试图通过几种不同的方式将ReadOnlyCollection行绑定到数据网格。

   dataGridViewResults.DataSource = this.MyQueryResult.Rows;

                BindingSource bs = new BindingSource();
                bs.DataSource = this.MyQueryResult.Rows;
                dataGridViewResults.DataSource = bs;

网格显示一个列,仅显示行索引但没有数据:

enter image description here

这里是参考QueryRow类的定义:

using System.Collections.ObjectModel;

namespace ClearScada.Client.Advanced
{
    //
    public class QueryRow
    {
        //
        public ReadOnlyCollection<object> Data { get; }
        //
        public int Index { get; }
    }
}

我创建了一个QueryResult实例的本地副本,以便我可以在&#39; Locals&#39;中捕获它的视图。 Visual Studio中的窗口显示在这里:

View of the QueryResult in the 'Locals' window of Visual Studio

我想要实现的是一个显示如下的视图:

enter image description here

请告诉我如何将这些值绑定到DataGridView?

,请帮助我

1 个答案:

答案 0 :(得分:0)

我确信必须有更好的方法,但这对我来说很有用,可以将数据传输到DataTable,然后将其绑定到DataGridView:

if(viewPager.getCurrentItem>0){
  viewPager.setCurrentItem(0);
}

如果有人能解释如何将ReadOnlyCollection直接绑定到DataGridView,我将不胜感激。