我希望能够将SQL输入到文本框中并在WPF Datagrid中显示结果。我想从SqlDataReader
开始,并将datagrid的ItemsSource
设置为数据读取器:
using (var cmd = conn.CreateCommand()) {
cmd.CommandText = sql.Text;
sqlResults.ItemsSource = cmd.ExecuteReader();
}
但是这失败并出现以下错误:Invalid attempt to call FieldCount when reader is closed
,我理解这意味着当WPF到处读取行对象的FieldCount
属性时,using
块已退出。
所以我尝试使用LINQ和ToList
来获取会在内存中保留的内容:
sqlResults.ItemsSource = cmd.ExecuteReader().Cast<DbDataRecord>().ToList();
但这只显示每一行的'FieldCount',这显然是DbDataRecord
唯一拥有的属性。
我考虑过的一些解决方案:
List<object>
,数据网格如何知道为列表中的每个对象生成列?但我觉得解决方案应该非常简单容易。我错过了一些基本的东西吗?
答案 0 :(得分:2)
也许DataTable过度杀伤,但它可以满足你的需要。
答案 1 :(得分:-1)
嗯,是的,根据你所说的,我可能会使用包含与DB列匹配的属性的结构,只需用linq填充它,这样就可以很容易地绑定它。
使用JavaScript工作更多,并想知道你是否能找到Eval的等价物(建议永远不会被创建者使用,顺便说一句:),如果这会有帮助......