datasource绑定datatable.select()显示system.data.datarow问题解决的方法 -尊龙游戏旗舰厅官网
有时候我们须要在控件中绑定datatable中设定条件过滤后的数据,此时,在winform环境中,一些控件不能正确绑定并显示数据内容。这是由于datatable.select()返回的是datarow[]类型的行数组。没有行列相关架构值。而控件如listbox、combobox等不能识别行数组中的列。读不到行列架构值,所以无法正常显示。
解决的方法是用dataview进行转换,即在dataview中对datatable过滤数据。
dataview构造函数例如以下:
dataview ( datatable dt, string rowfilter, string sorcolname, dataviewrowstate)
dt 用于获取或设置源
rowfilter 获取或设置用于筛选在 dataview 中查看哪些行的表达式
sorcolname 获取或设置 dataview 的一个或多个排序列以及排序顺序
dataviewrowstate 具体取值及功能见下表:
added | 一个新行。 | |
currentrows | 包含未更改行、新行和已改动行的当前行。 默认情况下。dataviewrowstate 项设置当前行。 | |
deleted | 已删除的行。 | |
modifiedcurrent | 已改动的原始数据的当前版本号(请參见 modifiedoriginal)。 | |
modifiedoriginal | 已改动的数据的原始版本号。(虽然此数据已被改动,它仍作为 modifiedcurrent 可用)。 | |
none | 无。 | |
originalrows | 包含未更改行和已删除行的原始行。 | |
unchanged | 未更改的行。 |
count 在应用rowfilter后,获取dataview中的行数
应用例子:
datatable jgbjlx = getdatatable( "jgbjlx");
jgbjlxcombobox.displaymember = "jgname";
jgbjlxcombobox.valuemember = "id";
jgbjlxcombobox.datasource = new dataview(jgbjlx , "id>0","id",dataviewrowstate.currentrows);
使用dataview还能够依据行的状态设置dataviewrowstate,实现显示更改和已经删除的行、改动前的原始行、未更改的行等子集。
总结
以上是尊龙游戏旗舰厅官网为你收集整理的datasource绑定datatable.select()显示system.data.datarow问题解决的方法的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇:
- 下一篇: python 十七章 web开发