今天来说说DetailsView控件。
A、注意:凡是后缀名称为view的控件都支持双向绑定。
B、DetailsView控件显示数据的原理:和GridView一样也是一个一个cell,但是一个页面只显示数据库中的一条数据。
C、把DetailsView控件拖到界面上来,看看它的模样,和我们以前的控件有些差异,把控件右上角的三角形点击开,启用分页,这时候数据就全部显示出来了,只不过是一条数据一个页面显示罢了。
它的左边是字段名称,右边显示的是具体的数据字段,左边的宽度和右边的宽度在默认不改变的情况下是呈现一个黄金分割点的比例。
D、对DetailsView的外观进行具体的调整:
具体的属性有很多,例如显示头部信息的属性:HeaderStyle控制头部显示效果的、FieldHeaderStyle控制字段
的名称的显示效果的,EditRowStyle编辑项显示效果,RowStyle奇数行数据的显示效果,AlternatingRowStyle偶数行数
据的显示效果,EmptyDataRowStyle空项数据模板的显示效果(数据什么时候都查不出来的情况下显示),这些都非常重要。
E、对某列数据进行控制。把某一列打成模板列,这和GridView控件一样。EditFileds(编辑字段),和GridView控件的编辑列一样。可以对每一列的样式进行控制显示了。例如还记得我们以前提到的日期的显示:{0:yyyy年MM月dd日}
F、一个重要的事件:DataBound,这个事件和我们GridView中的RowDataBound事件是一个思想下的,它们两个事件所取到的数据是一样的。只不过没有那两大判断了,一是判断数据行,二是判断行状态。在这里DataBound事件里面只需要判断当前DetailsView的显示状态,它有三种状态:Edit编辑状态、Insert添加状态、ReadOnly只读状态。首先判断一些当前是那种状态,注意:当前的状态和默认的状态可能不一样,大家可以想一想,DetailsView的默认状态可以是ReadOnly,但是我在显示界面上我修改数据了,这时候我的当前状态就是Edit了。
G、DetailsView的一个重要的属性:DefaultMode,上面提到的DetailsView有三种状态:Edit编辑状态、Insert添加状态、ReadOnly只读状态,这个属性是设置DetailsView的默认显示的状态。比如我想让DetailsView刚显示的时候就是编辑状态,那么我就可以让DetailsView的默认状态时Edit的。
页面一加载的时候,默认模式和当前模式是一样的,但我一点编辑就不一样了,所以要进行判断,我又说了一遍为什么要进行判断。我又说了一遍这个知识点,就是 让大伙能够和GridView的RowDataBound事件区分开来,并且理解这个时间的所实现功能以及为什么这么写。在GridView中的 e.Row对应着的就是DetailsView1这个对象了。千万理解。
确定第几行第几列,DetailsView1.Rows[2].cells[1].Text//确定第几行第几个单元格也就是确定了第几行第几列的相交的那个单元格,找到单元格了就可以进行数据的显示操纵了。
H、把一列数据打成模板列以后里面有编辑模板,添加模板,修改模板,和我们的GridView的模板列是一样的。
今天我终于明白了双向绑定就是把绑定字段的子都名称的字段数据作为参数放到指定的增删改查方法上。
DetailsView就说这些吧,以后又补充的时候再说。DetailsView和GridView配合起来用最好了,比如说在GridView中查看详细,转到另一个页面中,另一个页面用DetailsView来显示,这就需要传ID,这样显示效果非常好,大家可以试试。
--------------------------------------------------------------------
为了大家便于理解,截了几张图给大家看看。
图一:这是设计好的一个DetailsView
编辑状态下的DetailsView
添加状态下的DetailsView
编辑字段,可单独设置每一个字段的显示外观,并且可以把字段设置为模板列。
DetailsView的一系列设置外观的属性
DetailsView一系列设置样式的属性(非常重要)
DetailsView的Databound事件,等同于GridView的RowDataBound事件,注意进行区别。
谢谢!