上一篇我们讲了dataset的内部构成和如何往里面填充数据.当一个dataset被填充上数据后我们就可以用个数据绑定控件来绑定到dataset里的datatable了,然后就可以显示出里面的数据了.比如:GridView1.DataSource = ds.Tables[0].DefaultView,这样数据被显示出来了.很奇怪ds.Tables[0].DefaultView怎么多个DefaultView这玩意.有什么作用?我们把它去掉直接用ds.Tables[0]发现也可以.那这个东西有什么用?官方的解释是:获取可能包括筛选视图或游标位置的表的自定义视图.
简单的说就是:获取表的视图.什么叫表的视图?表指的就是datatable,也就是datatable的视图.datatable就是datatable还要视图干什么?有什么作用?可以这么解释,datatable是存放是数据的,而且存放在内存中,可以被程序去处理.但是datatable并不能把这些数据呈现出来被我们肉眼看到.那我们要把这些数据显示出来被我们看到,那就要用视图了.视图嘛,字面意思就是,可视化图形的意思.现在知道,视图的作用就是把datatable里的数据显示出来能被我们看到的.为了能有个形象的理解,打个不准确的比喻吧.水,是无色透明的.那么我们怎么能看到水呢?
我们用个杯子去装水,是不是就能看到水的形状了.是什么形状呢?当然取决于杯子的形状,用圆形杯子装水,我们看到的水的形状就是圆柱体的.用方形杯子装水,我们看到的水形状就是立方体的.现在我告诉你,datatable里的数据就相当于水,视图就相当于杯子.那么要让数据(水)显示出来给我们看到,是不是要用个视图(杯子)去装数据啊.现在是否对视图有个感性的认识了,它的主要作用就是显示数据的.说白了视图就是格式化输出数据的.可以联想到html语言就相当于视图,而里面的文字就相当于数据.例如在html中有:<b>数据</b>那么'数据'二字显示的就是粗体的.为什么显示粗体?因为html(视图)能让它(数据)显示,并能控制它(数据)显示的样式.(插一句,html的作用是用来显示数据的(图片,文字.等等都行)的,那么数据放哪呢?
可以从数据库里读出数据来然后通过html显示,也可以把数据存放xml文件里,现在就很流行用xml来存放数据,用html来显示.也就是xml+html技术.xml现在是很火的一个东东,后面我们再详细探讨探讨xml的一些知识).上面讲了那么多废话无非是想说:视图是用来显示数据的.那么我有个视图没有数据,可有意义?没有.光有视图没有任何数据,视图去显示谁呢?就是无用的废物了.那么我们有数据没有视图可有意义呢?有,我们不想显示这些数据,就不一定非要搞个视图了吧.
可见,我们有个视图必然要有数据才有意义.程序中就是这样,有视图肯定有数据.而数据我们可以想象成就装在视图中(水装在杯子中嘛),我们就一组数据,可以搞几个不同的视图啊,当把数据放到不同的视图里,显示出来的就是不一样的效果的.同样,把一个视图改变了那么这个视图里的数据显示出来的的样式就改变了,可见视图对数据来说还是瞒重要的一个东西.在程序中,视图不仅能显示数据,也能实现对数据的增删改查.因为可以看做数据装在视图里嘛,视图当然能对数据进行操作.回想下,我们说过dataset可以看做是个小型的数据库.既然是数据库,肯定能增删改查嘛,怎么做到呢?把数据放到视图里用视图来操作.
(上面说的真是够罗嗦了,发现我越来越唐僧了,只怪我脑子不灵活,理解能力差,所以把知识表达的容易理解才行)
好了讲了这么多,我们来看看在程序中到底怎么去用视图.
在程序中,表示视图的类是:DataView.也就是说在程序中DataView就是视图,那么数据呢,数据当然是datatable中的数据,而datatable只管把数据装起来,不会显示.所以我们可以创建一个视图把datatable放到视图里,也就是把数据放进去了.(datatable 可以想象成一个无形的表)
程序中创建一个视图就是 DataView dv = new DataView(),当然仅有视图没数据是没有意义的.所以我们创建视图的时候,都装载一个datatable进去,像这样创建的DataView dv = new DataView(datatable).这样就是把datatable配套一个视图对象(dataview)了.
上面说了,视图可以控制变数据的显示样式的.我把视图的排列方式改变了,那么数据显示出来的样式也就改变了.DataView中有个方法叫DataView.Sort(),就是用来对数据排序的.可形象的想象为DataView里面是一层一层的像书架一样.书就是数据摆在书架的层上.调用这个方法后,相当于把书架里的每层按规律换一下.(上层换到下层...)
我们看看下面代码,代码中我们创建一个dataset,然后添加两个表分别是table1和table2,table1是学生表,有两个字段,id和name;table2是借书表,里有三个字段,id,tb1_id,bookname.然后用gridview1绑定到table1,用gridview2绑定到table2.
我们对table2进行排序,把table2里的字段添加到DropDownList中,我们通过选择DropDownList里的值,来设定按哪个字段来排序.