使用DataTable的Select()方法遇到的问题解决方法

今天使用到DataTable的select()方法遇到了一个问题 看代码

   var row = dt.Select("status='未下载'");

当使用查询后,得到的行集合的列名会消失,如果此时只拿行集合给dataview赋值,则表格会显示空白数据。

经过一番百度,解决了这个问题。

Select方法的返回的是包含查询到的数据的DataRow,但是这个DataRow只是被查询的DataTable的一个映射,所以DataRow是随着DataTable的行变化而变化的。

所以,要想把返回的DataRow放进数据显示控件中,需要将其放入另一个DataTable中。

另外,在一个新表中插入行,不能直接用DataTable.Rows.Add(DataRow)的方式,因为这样是插入一个新表,也就是DataRow是空的。要用导入行的方式,DataTable.ImportRow(DataRow)。当然,前提是这个新表要有与原数据表一样的结构。

看代码

    var row = dt.Select("status='未下载'");
                var temp = dt.Clone();//复制表结构
                foreach (var item in row)
                {
                    temp.ImportRow(item);//导入行数据
                }

导入行数据之后,就可以拿导入行数据的新表给dataview赋值了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章