• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

奋斗中...

曾经的程序员。ASP.NET/C#, JavaScript, PL/SQL, T-SQL; 工具: VS2003/2005, Oracle, SQLServer; 偶尔写点CSS, 批处理.
头脑中经常有新想法, 可惜没有去实现.
Never give up.
Never get into a fight with a pig. Both of you will get dirty. But the pig actually enjoys it.
  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

DataGrid和GridView绑定筛选后的数据

以前用DataTable.Select来筛选数据,返回DataRow[]数组,但是不能直接绑定到表格中。总结了网上的方法:

第一种,真的要按原来思路去实现,

  DataRow[]   rows=dt.Select( "CategoryID=16 ");

  DataTable   dt2=dt.Copy(); //我印象中有Clone方法可以直接复制架构和数据结构但不复制数据的,不要用copy方法。
  dt2.Rows.Clear();
  foreach(DataRow   row2   in   rows)
  {
  object[]   row3=row2.ItemArray;
  dt2.Rows.Add(row3);
  }
  this.DataGrid1.DataSource=dt2.DefaultView;
  this.DataGrid1.DataBind();

 

另外一种方法,我觉得更佳,达到目的。

不建议DataRow数组绑定DataGrid 
同样的效果,建议用DataView.RowFilter实现

DataTable dt = ..........;
  DataView dv = dt.Copy().DefaultView;
  dv.RowFilter = "[field1]>1";
  DataGrid1.DataSource = dv;
  .............

 

另外记录以下(from http://topic.csdn.net/u/20070915/23/a0f45583-387a-4a4d-80c5-b0899b59c636.html ):

采用以下办法:
DataRow[]   drArr   =   dt.Select( "C1=’abc’ ");//查询

问题来了,如果要把DataRow赋值给新的DataTable,怎么赋值呢?你可能会想到:  

DataTable   dtNew   =   dt.Clone();  
for   (int   i   =   0;   i   <   drArr.Length;   i++)  
{  
        dtNew.Rows.Add(drArr[i]);  
}
但这样程序就会出错,说该DataRow是属于其他DataTable的,那要怎么做呢?很简单,这样就可以解决了:  

DataTable   dtNew   =   dt.Clone();    
for   (int   i   =   0;   i   <   drArr.Length;   i++)    
{    
        dtNew.ImportRow(drArr[i]);
}  

这样就完成了。

posted on 2012-04-07 16:39  jes  阅读(1763)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3