动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > ASP.NET技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ ASP.NET技巧 ]的信息

本月文章推荐
.在ASP.NET访问Excel文件 (VB and.
.使用.NET 2.0中的秒表-Stopwatc.
.从ASP.NET 1.1升级到ASP.NET 2.0.
.一个极有可能引发ExecutionEngin.
.ASP.NET中利用cookies保持客户端.
.ASP.NET 2.0角色及成员管理 .
.DataSet 添加数据集、行、列、主.
.用Asp.net屏蔽F5、Ctrl+N、Alt+F4.
.如何获取当前程序文件的路径 Cur.
.为datagrid的自带分页添加首页、.
.ASP.NET随机码生成示例.
.在.NET开发中灵活使用TreeView控.
.如何在IE右键菜单中添加菜单项以.
.教你制做Web实时进度条.
.利用ASP.NET的内置功能抵御Web攻.
.Asp.Net使用POST方法最简单的实现.
.XML 自定义串行化.
.在ASP.NET Atlas中调用Web Servi.
.Asp.Net小技巧之在client端调用s.
.用ashx动态生成文件.

ADO.NET 2.0 - 如何建立一个 DataView

发表日期:2006-10-24 |


借助于DataView,我们便能够为储存于DataTable中的数据建立不同的视图。比方说,通过DataView,您可以使用不同的排序顺序检视DataTable中的数据,亦或是根据数据列状态或筛选表达式来筛选DataTable中的资料。重要的是,当我们需要替DataTable中的数据建立不同的视图而且需要将这些数据绑定到窗体上的控件时,更需要使用DataView来完成。

 

DataView提供的是一种动态的数据视图,也就是说,其内容、排序顺序、与成员会反应出来源DataTable中的任何变更。显然DataView与DataTable.Select方法有很大的不同,Select方法会根据特定的筛选表达式或排序顺序从数据表中传回一个DataRow对象数组,而且其成员与排序顺序是静态不变的。正由于DataView的动态反应特性,因此非常适合用于数据绑定应用程序。

 

DataView提供您单一数据集合的动态视图,您可以对数据集合套用不同的排序顺序和筛选条件,此点与SQL Server数据库所提供的视图(View)有点类似。然而,DataView与数据库视图仍然有相当大的差异,因为DataView无法当成数据表来使用,也无法提供连结数据表的视图。此外,您不仅不能排除来源数据表中的字段,也不能额外加入来源数据表中不存在的字段(例如:表达式字段)。

 

您可以采用两种方式来建立一个DataView。第一种方式是使用DataView建构函式,第二种方式则是建立DataTable之DefaultView属性的一个参考。本文将详细探讨如何使用这两种方式来建立DataView。

 

使用DataView建构函式

 

DataView建构函式共提供下表所示的三个多载版本。

 

DataView建构函式的多载版本
 
DataView()
 
DataView(ByVal table As DataTable)
 
DataView(ByVal table As DataTable, _
        ByVal RowFilter As String, _
        ByVal Sort As String, _
        ByVal RowState As DataViewRowState)
 


DataView建构函式的第一个版本表示不使用任何参数来初始化DataView类别的新执行个体。请注意,如果您采用此版本来建立DataView,必须在建立DataView对象后先设定Table属性以便决定其来源DataTable,然后才能继续设定其它属性(RowFilter、Sort…等等)。

 

以下的程序代码示范如何使用第一个版本的DataView建构函式来建立DataView对象,以便筛选和排序数据集内之「章立民工作室」数据表的数据列,并将DataGridView控件绑定至此DataView。我们发现,DataGrid控件只会显示出女性,并且数据会依姓名的笔画顺序由多至少排列。以下是本范例的程序代码:

 

SqlDataAdapter1.Fill(Ds章立民工作室, "章立民工作室")
' 建立 DataView 对象
Dim dv As DataView = New DataView

' 由于采用没有任何参数的 DataView 建构函式来建立 DataView 对象,
' 因此必须先设定 Table 属性以便决定其来源 DataTable
dv.Table = Ds章立民工作室.章立民工作室

' 设定排序顺序以便依姓名的笔画顺序由多至少排列
dv.Sort = "姓名 DESC"

' 设定筛选条件以便只显示出女性
dv.RowFilter = "性别 = '女'"

' 将 DataGridView 控件绑定至 DataView
DataGridView1.DataSource = dv

 

DataView建构函式的第二个版本表示使用指定的DataTable来初始化DataView 类别的新执行个体。

 

以下的程序代码它示范如何使用第二个版本的DataView建构函式来建立DataView对象,以便筛选和排序数据集内之「章立民工作室」数据表的数据列,并将DataGridView控件绑定至此DataView。我们发现,DataGridView控件只会显示出「信息部」的员工数据,并且数据会依照目前薪资由高至低排列:

 

SqlDataAdapter1.Fill(Ds章立民工作室, "章立民工作室")

' 建立 DataView 对象
Dim dv As DataView = New DataView(Ds章立民工作室.章立民工作室)

' 设定排序顺序以便依目前薪资由高至低排列
dv.Sort = "目前薪资 DESC"

' 设定筛选条件以便只显示出「信息部」的员工数据
dv.RowFilter = "部门 = '信息部'"

' 将 DataGridView 控件绑定至 DataView
Me.DataGridView1.DataSource = dv

 

DataView建构函式的第三个版本表示使用指定的DataTable、RowFilter、Sort和DataViewRowState,来初始化DataView类别的新执行个体。

 

以下的程序代码它示范如何使用第三个版本的DataView建构函式来建立DataView对象,以便筛选和排序数据集内之「章立民工作室」数据表的数据列,并将DataGridView控件绑定至此DataView。我们发现,DataGridView控件只会显示出目前薪资大于49000元的员工数据,并且数据会依照目前薪资由高至低排列:

 

SqlDataAdapter1.Fill(Ds章立民工作室, "章立民工作室")

' 建立 DataView 对象
Dim dv As DataView = New DataView( _
                             Ds章立民工作室.章立民工作室, _
                             "目前薪资> 49000", _
                             "目前薪资 DESC", _
                             DataViewRowState.CurrentRows)
' 将 DataGridView 控件绑定至 DataView

Me.DataGridView1.DataSource = dv

 

在此要特别提醒大家,当DataView被建立时,以及当Sort、RowFilter或RowStateFilter属性有任何一个被修改时,都会重新建立DataView的索引。此意味着,如果您希望享有最佳的效能,应该在建立DataView时,直接于建构函式中指定排序顺序或筛选条件。如果您于建立DataView时并未直接于建构函式中指定排序顺序或筛选条件,而是于建立DataView对象之后再设定其Sort、RowFilter或RowStateFilter属性,将会导致DataView的索引被重新建立,而使得索引至少被建立两次。

 

使用DataTable的DefaultView属性

 

DataTable的DefaultView属性会传回一个以此DataTable作为来源数据表的DataView对象,您便让您去排序、筛选、与搜寻DataTable中的数据列。如果您所建立的DataView要显示出DataTable中的所有数据列并依照自然顺序来排列,则使用DataTable的DefaultView属性来建立DataView将是非常直接且便利的方式。

 

以执行画面如图表1所示的程序而言,它使用DataTable的DefaultView属性来建立DataView,以便一开始能够于DataGrid控件中显示出来源数据表的所有数据列,并让使用者在执行阶段通过DataView来动态筛选数据。兹将程序代码列示如下:

 

' DataView 对象的类别层级宣告
Private dv As DataView

Private Sub DemoForm5_Load(ByVal sender As System.Object, _
  ByVal e As System.EventArgs) Handles MyBase.Load
  FillComboBoxDepartment()

  SqlDataAdapter1.Fill(Ds章立民工作室, "章立民工作室")

  ' 建立 DataView
  dv = Ds章立民工作室.章立民工作室.DefaultView

  ' 显示 DataView 中的数据列数目
  txtRowCount.Text = dv.Count.ToString

  ' 将 DataGridView 控件绑定至 DataView
  Me.DataGridView1.DataSource = dv
End Sub

Private Sub FillComboBoxDepartment()
  ' 建立数据命令对象(亦即 SqlCommand 对象)
  Dim foxCMD As New SqlCommand
  foxCMD.Connection = SqlConnection1
  foxCMD.CommandText = "SELECT DISTINCT 部门 FROM dbo.章立民工作室"

  ' 开启连接
  SqlConnection1.Open()

  Using myReader As SqlDataReader = foxCMD.ExecuteReader()
     If myReader.HasRows Then
          While myReader.Read()
              ComboBoxDepartment.Items.Add(myReader.GetSqlString(0))
          End While
      End If
  End Using
  ComboBoxDepartment.SelectedIndex = 0
End Sub

Private Sub btnFilter_Click(ByVal sender As System.Object, _
  ByVal e As System.EventArgs) Handles btnFilter.Click
  dv.RowFilter = "部门= '" & _
    ComboBoxDepartment.SelectedItem.ToString() & "'"
  ' 显示 DataView 中的数据列数目
  txtRowCount.Text = dv.Count.ToString
End Sub

http://www.cnblogs.com/liminzhang/archive/2006/10/23/537518.html

上一篇:ASP.NET弹出一个对话框 人气:13639
下一篇:asp.net中读取和更新xml文件 人气:4338
浏览全部ADO.NET 2.0的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-10-13 爬爬思特新闻管理系统 v2.0 Beta1
2008-10-13 Pligg v9.9.5 Beta
2008-10-13 广优邮件发送系统 v2.1
2008-10-13 缤纷互动视频交友 v3.1 RC
2008-10-13 MyShop网络商城 build 081005
2008-10-13 Chyrp 超轻量级开源博客引擎 v2.
2008-10-13 162100静态(论坛/文章)系统 v2.4
2008-10-13 金博人才招聘求职网黄金版 v4.2
2008-10-13 愚人笔记 v4.0
2008-10-11 联系人分组工具 v1.1 中文破解版
2008-10-11 FaceMelter变脸 v2.0 汉化破解版
2008-10-11 PathTracker道路跟踪仪 v1.2 破解
2008-10-11 Rooms手机聊天室 v0.6.7 破解版
2008-10-11 RemoteDesktop远程桌面 v1.0 破解
2008-10-11 ProRemote远程调音台 v1.0.1 破解
2008-10-11 PicShare照片共享 v1.0.0 破解版
2008-10-11 Photogene照片编辑器 v1.5 汉化破
2008-10-11 WriteRoom共享文档 v1.0 破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵
SEO対策 中国語教室 ホームページ作成