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,实现显示更改和已经删除的行、修改前的原始行、未更改的行等子集。

时间: 2024-10-12 08:20:59

DataSource绑定DataTable.Select()显示system.data.DataRow问题解决办法的相关文章

DataSource绑定DataTable.Select()显示system.data.DataRow问题解决的方法

有时候我们须要在控件中绑定DataTable中设定条件过滤后的数据,此时,在winForm环境中,一些控件不能正确绑定并显示数据内容.这是由于DataTable.Select()返回的是DataRow[]类型的行数组.没有行列相关架构值.而控件如ListBox.comboBox等不能识别行数组中的列.读不到行列架构值,所以无法正常显示. 解决的方法是用DataView进行转换,即在DataView中对DataTable过滤数据. DataView构造函数例如以下: DataView ( Data

编译器错误消息: CS0122: “System.Data.DataRow.DataRow(System.Data.DataRowBuilder)”不可访问,因为它受保护级别限制

编译错误 说明: 在编译向该请求提供服务所需资源的过程中出现错误.请检查下列特定错误详细信息并适当地修改源代码. 编译器错误消息: CS0122: "System.Data.DataRow.DataRow(System.Data.DataRowBuilder)"不可访问,因为它受保护级别限制 源错误:   行 17: 行 18: DataTable dt = new DataTable(); 行 19: System.Data.DataRow r = new 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-in-asp-net DataTable dtPage = dt.Rows.Cast<System.Data.DataRow>().Skip(pageSize * (page - 1)).Take(pageSize).CopyToDataTable();

System.Data.DataRow.DataRow(System.Data.DataRowBuilder 因为它受保护级别限制 如何解决,解决办法

错误 1 "System.Data.DataRow.DataRow(System.Data.DataRowBuilder)"不可访问,因为它受保护级别限制 原因:DataRow dr= new DataRow();    // 错误,DataRow 不能直接new 解决办法: DataRow dr :或者,使用DataTable dt = new DataTable(); //对应的行,使用dt[],例如第一行  dt[0]

错误 1 “System.Data.DataRow.DataRow(System.Data.DataRowBuilder)”不可访问,因为它受保护级别限制

new DataRow 的方式: DataTable pDataTable = new DataTable(); DataRow pRow = new DataRow(); 正确的方式: DataRow pRow=pDataTable.newRow();

SQL server安装时显示重启计算机失败问题解决办法

前几天在装SQL server2016的时候,一直显示重启计算机失败; 网上的方法也找来用了,但是重启完还是同样的问题,试了很多种方法,最后在一次测试中点关机的时候不小心点成了重启(win10有个毛病就是点重启的时候会强制更新系统),然后我就很无奈的等它系统更新,更新完我再试的时候,竟然重启那一栏pass了,当时激动不已,亲测之下原来是系统更新问题,我们一般人用win10 系统时都会选择吧系统更新关掉,我也不例外,但是SQL server安装时有一项是要实时更新,这就要求操作系统不能处于禁止更新

DataTable.Select

转载请注明出处:http://www.cnblogs.com/havedream/p/4453297.html 方法:DataTable.Select 作用:获取 DataRow 对象的数组. 重载: Select()------------------------------------------------获取所有 DataRow 对象的数组. Select(String)-------------------------------------------获取按与筛选条件相匹配的所有 D

[转]dataTable select() 方法

DataTable是我们在进行开发时经常用到的一个类,并且经常需要对DataTable中的数据进行筛选等操作,下面就介绍一下Datatable中经常用到的一个方法——Select,微软提供了四个函数的重载,分别是 Select() Select(string filterExpression) Select(string filterExpression, string sort) Select(string filterExpression,string sort, DataViewRowSt

浅谈 System.Data.DataRowCollection 类

我们来看看以下程序吧: 01: using System; 02: using System.Data; 03: using System.Linq; 04: 05: namespace Skyiv.Ben 06: { 07: class Program 08: { 09: static void Main() 10: { 11: var dt = new DataTable(); 12: dt.Rows.Add(); 13: foreach (var row in dt.Select()) 1