分享
 
 
 

ASP.NET:使用DataView对象显示数据

王朝asp·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

在学习DataSet对象的时候,我们遇到一个概念:DataView。该对象表示对DataSet中的数据表的一种查看方式,系统默认的方式是将数据以表格的形式排列,并且数据是根据从数据表中读取数据时行排列的顺序,通常和涉及数据库时的Sort Order或是在SQL语句中定义的排列依据(升序或降序等)。

使用DataView时候,可以根据不同的实际情况,来使用不同的排序依据(Sort)、过滤条件(Filter)或是查找方法(Search)。

下面这个实例,我们将利用DataView对象,显示同一个数据库中的不同数据。

在Adodotnet web项目里,添加一个Web窗体命名为DataView.aspx,并添加三个Button控件,分别时Button1(Text=”显示全部数据”)、Button2(Text=”只显示男生数据”)和Button3(Text=”只显示女生数据”),添加一个DataGrid控件,命名为DataView.aspx,设计窗口如图8.11所示。

图8.11 DataView.aspx的设计窗口

切换至DataView.aspx的HTML窗口,主要HTML代码如下:

<form id="Form1" method="post" runat="server">

<FONT face="宋体">利用DataView过滤数据

<asp:Button id="Button1" style="Z-INDEX: 101; LEFT: 8px; POSITION: absolute; TOP: 40px" runat="server"

Text="显示全部数据 " Width="105px" Height="32px"></asp:Button>

<asp:Button id="Button2" style="Z-INDEX: 102; LEFT: 112px; POSITION: absolute; TOP: 40px" runat="server"

Text="只显示男生数据" Width="105px" Height="32px"></asp:Button>

<asp:Button id="Button3" style="Z-INDEX: 103; LEFT: 216px; POSITION: absolute; TOP: 40px" runat="server"

Text="只显示女生数据" Width="105" Height="32"></asp:Button>

<asp:DataGrid id="DataGrid1" style="Z-INDEX: 104; LEFT: 8px; POSITION: absolute; TOP: 80px" runat="server"

Width="328px" Height="128px" Font-Size="X-Small"></asp:DataGrid></FONT>

</form>

DataView.aspx的逻辑代码如下:

'--------code begin -------

Imports System.Web

Imports System.Data

Public Class DataView

Inherits System.Web.UI.Page

#Region " Web 窗体设计器生成的代码 "

'此处省略了窗体设计器生成的代码,以节约篇幅

#End Region

Public rowfilter As String = "null"

'声明该Web Form的全局变量,用来保存DataView对象的过滤条件,

'初始化默认为null,即不过滤

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

'在此处放置初始化页的用户代码

'调用或去数据的过程

getdata()

End Sub

'编写通用过程getdata,该过程用于或去数据,并根据过滤条件生成视图

Sub getdata()

'在此处放置初始化页的用户代码

Dim connstr As String '声明数据库连接字符

Dim mycon As OleDb.OleDbConnection

'因为使用Aeecss数据库,所以声明OleDConnention对象

Dim mycmd As OleDb.OleDbDataAdapter

'声明DataAdapter对象

Dim mysql As String

'声明Command命令的 SQL字符串

' Try

connstr = "provider=microsoft.jet.oledb.4.0;data source=" + Server.MapPath(".") + "\StudentInfor.mdb"

'为连接字符串赋值

mycon = New OleDb.OleDbConnection(connstr)

'实例化Connection对象

mysql = "Select * from student"

'设置SQL语句,即查询数据库中所有内容

mycmd = New OleDb.OleDbDataAdapter(mysql, mycon)

'实例化DataAdapter对象

Dim mydataset As Data.DataSet

'声明DataSet对象

mydataset = New Data.DataSet

'实例化DataSet对象

mycmd.Fill(mydataset, "student")

'利用DataAdapter对象的Fill方法填充mydataset对象,

'填充到mydataset中的数据表名称为student

Dim dv As Data.DataView

dv = New Data.DataView(mydataset.Tables("student"))

'mydataset.Tables(0)表示视图建立在哪一个数据表上,

'Tables(0)表示在DataSet里数据表的索引项,从0开始,

' 这条语句等同与 dv = New Data.DataView(mydataset.Tables("student" ))

'判断过滤条件,然后根据过滤条件生成视图

Select Case rowfilter

Case "null"

'如果是"null",即为不过虑

Case "男"

dv.RowFilter = "sex='男'"

'只显示男生数据

Case "女"

dv.RowFilter = "sex='女'"

'只显示女生数据

End Select

DataGrid1.DataSource = dv

'DataGrid1控件添加数据源,即mydataset对象

'DataGrid1控件指定数据表

DataGrid1.DataBind()

' Catch ex As Exception

'如果出现错误,输出错误信息

' Response.Write("程序出现错误, 错误信息如下: <br>" & ex.Message)

' Finally

mycon.Close() '关闭数据连接

' End Try

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

rowfilter = "null"

getdata()

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

rowfilter = "男"

getdata()

End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

rowfilter = "女"

getdata()

End Sub

End Class

'-------code end -------------

保存编译后,通过浏览器预览,如图8.12所示。

图8.12 DataView.aspx运行效果

当然,如果只是为了过滤数据,完全可以在SQL语句里加入”Where Sex=’男’”。DataView的功能是很丰富的,它可以使用多种复合控制项绑定到同一个数据表上。有兴趣的读者可以编写代码来验证,篇幅有限,这里就不再举例演示。

8.4 本章小结

本章详细的介绍了ADO.NET数据访问技术。ADO.NET数据库访问技术是新一代的数据存取技术,它采用离线的方式从数据库中存取数据,提高了分布式应用程序的效率和扩展性。ADO.NET的关键技术式DataSet数据模型,在ADO.NET里,所有程序是以数据为中心的,通过对XML的支持,使得ADO.NET具有良好的扩展性和兼容性。通过DataSet类的内存数据库技术,使得对服务器资源的开销降到了最低。而DataSet对象通过对数据格式到XML的转换,可以轻而易举地穿透公司防火墙,或进行进行异构节点的数据传输。

[1] [2] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有