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问题解决的方法的更多相关文章
- How to use dt.Rows.Cast<System.Data.DataRow>().Take(n)
参考文章:http://stackoverflow.com/questions/2787458/how-to-select-top-n-rows-from-a-datatable-dataview-i ...
- 高并发分布式系统中生成全局唯一(订单号)Id js返回上一页并刷新、返回上一页、自动刷新页面 父页面操作嵌套iframe子页面的HTML标签元素 .net判断System.Data.DataRow中是否包含某列 .Net使用system.Security.Cryptography.RNGCryptoServiceProvider类与System.Random类生成随机数
高并发分布式系统中生成全局唯一(订单号)Id 1.GUID数据因毫无规律可言造成索引效率低下,影响了系统的性能,那么通过组合的方式,保留GUID的10个字节,用另6个字节表示GUID生成的时间(D ...
- DropdownList控件绑定数据源显示system.data.datarowview的问题
.net开发的时候经常需要用到在后台取数据再绑定到控件的问题,通常只需要连接数据库,从数据库取出数据,放到Dataset里面,然后再设置控件的DataSource为这个Dataset,然后再datab ...
- 错误 1 “System.Data.DataRow.DataRow(System.Data.DataRowBuilder)”不可访问,因为它受保护级别限制
new DataRow 的方式: DataTable pDataTable = new DataTable(); DataRow pRow = new DataRow(); 正确的方式: DataRo ...
- .net判断System.Data.DataRow中是否包含某列
大家对将DataRow转成实体对象并不陌生,转成实体的时候一般都会加上这个判断 if (row["字段名"] != null && row["字段名&q ...
- DataTable.Select筛选过滤数据返回DataRow[]转为DataTable添加到DataSet
问题还原,如图所示,我们要筛选所有SHDP 为北京翠微KR的数据. 1. 筛选DataTable微软为我们提供了一个方法DataTable.Select(),其用法如下: 1) Select()—— ...
- 关于DataTable内部索引已损坏的问题 System.Data.RBTree
1.错误提示: 最近,Winform程序在极其偶然的情况下会遇到如下错误提示 Framework 版本: v4.0.30319 说明: 由于未经处理的异常,进程终止. 异常信息: System.Inv ...
- (转)Combobox出现System.Data.DataRowView的原因,以及指定ValueMember的时机问题
原文地址 http://blog.csdn.net/lubiaopan/article/details/5915774 当使用Combobox控件时,出现SelectedValue的值为“System ...
- DataTable.Select
转载请注明出处:http://www.cnblogs.com/havedream/p/4453297.html 方法:DataTable.Select 作用:获取 DataRow 对象的数组. 重载: ...
随机推荐
- ThinkPHP 3.1.2 模板中的基本语法<1>
# # ThinkPHP 3.1.2 模板中的基本语法 一.传统的方式,导入CSS和JS文件 1.css link js scr <link rel='stylesheet' type='tex ...
- c++中的成员选择符
c++中支持仅能指向类成员的指针,对这种类型的指针进行数据的提取操作时,可使用如下两种类型的操作符:成员对象选择操作符.* 和 成员指针选择操作符->* 例一: #include <ios ...
- 74HC595的中文资料
74HC595--具有三态输出锁存功能的8位串行输入.串行/并行输出移位寄存器 本文翻译自NXP的74HC595的datasheet 74HC595和74HCT595是带有存储寄存器和三态输出的8位串 ...
- ajax 基础
<html><head><script type="text/javascript">function showHint(str){var xm ...
- gets scanf以及缓冲区域的问题
1:scanf scanf会忽略开头所有的空格,并以Space Enter Tab 结束输入, 不会舍弃最后的回车符(即回车符会残存在缓冲区域中) 2:getchar getchar以Enter结束, ...
- jquery 动态增加的html元素,初始化设置在id或class上的事件无效
一般情况,我们会在页面初始化完成后对class定义一些全局事件,举个栗子: $(document).ready(function(){ $(".class").on("m ...
- Runtime.getRuntime().exec(...)使用方法
Runtime.getRuntime().exec(...)使用方法 如果想要了解更多的信息,参阅代码里面给的链接 下面是这个正确的例子 public class RuntimeExec { /** ...
- fedora21 codeblocks在编辑装态下无法输入
来自:http://forum.ubuntu.com.cn/viewtopic.php?f=88&t=284409 用codeblocks,突然发现怎么敲键盘都不能输入 搜索后得知: Co ...
- paip.tree 生成目录树到txt后的折叠查看
paip.tree 生成目录树到txt后的折叠查看 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.ne ...
- 3644 - X-Plosives(水题,并差集)
3644 - X-Plosives A secret service developed a new kind of explosive that attain its volatile proper ...