将动态查询绑定到DataGrid C#WPF

时间:2017-05-14 12:33:59

标签: c# wpf sqlite sqlite-net sqlite-net-extensions

是否可以在不指定表或列的情况下将查询绑定到数据网格?

我们说我有这个问题:

string query = "select Email from Persons'

但它会改变,下次我有:

listPerson.DataContext = db.Query....

我使用的是Sqlite Net扩展,但是我在绑定时遇到问题而没有明确指定表格对象,例如:

{{1}}

2 个答案:

答案 0 :(得分:0)

是的,您可以动态地将任何一个或多个表绑定到datagrid。 首先在xaml代码中验证您的列:

<DataGrid x:Name="dataGrid" > 
     <DataGrid.Columns>
            <DataGridTextColumn Header="col1" Binding="{Binding col1}">
            <DataGridTextColumn Header="col2" Binding="{Binding col2}">
     </DataGrid.Columns>
</DataGrid>

在xaml代码后面编码绑定数据

      private void FillDataGrid()
    {
        var query = Context.Database.SqlQuery<Table>("Select * From table");

        var result = query.ToList();
        dataGrid.ItemsSource = result ;
    }

答案 1 :(得分:0)

让我再解释一下我的问题。

我想做一些动态报告。我使用SQLite数据库和SQLite .NET扩展。我从xml文件加载查询(此查询可以是来自数据库的任何内容)。我想以某种方式将此查询的结果加载到grid或listview。 通常它不是问题因为我&#34;映射&#34;我的数据到模型中的对象,例如:

 using (var db = new SQLiteConnection(new SQLite.Net.Platform.Generic.SQLitePlatformGeneric(), "zakupy.db"))
        {
            listPerson = db.Table<Persons>().Where(x => x.Property == "P" && x.Status == 0).ToList();
        } 
lstPersons.DataContext = listPerson;

现在我尝试做这样的事情:

  using (var db = new SQLiteConnection(new SQLite.Net.Platform.Generic.SQLitePlatformGeneric(), "zakupy.db"))
        {
            var cc = db.Query<Table>("SELECT * from Events");
            lstPersons.DataContext = cc.ToList();
        }

但在网格中我只看到这样的东西: enter image description here