关于 DataGrid Web 控件的热门问题
文章译自在工作过程中遇到的实际问题,而查的MSDN,当时没有找到中文资料,网上关于此方面的实用的资料也不多,有心收集下来并翻译,在此与大家交流,欢迎批评指正: [email protected]
内容——
序言: Windows 窗体 &Web 窗体中的 DataGrid 控件
① .控制列的宽度、高度和对齐方式。
② .制定列的显示和编辑模式外观。
③.格式化日期、货币和其它数据。
④.动态显示和隐藏列。
⑤.动态增加列。
⑥.用 DataGrid 控件向数据源添加一条记录。
⑦.在编辑模式下显示一个下拉列表。
⑧.用 CheckBox 选择多个 Items.
⑨.一次编辑多行。
⑩. 单击任何地方选中该行。
简介
DataGrid 服务器控制是从数据源显示信息的强有力的工具,使用简单。你可以只通过设定一些属性就可以显示可编辑的数据,并且使其具有专业的外观,同时,它还具有非常复杂的对象模型,为你展示数据提供了很大的灵活性。
这篇文章重点讲解了在 NewsGroup 网络和其它的开发人员的论坛里经常问到的关于制定 DataGrid 的显示的问题。这里所讨论的有些问题是很简单的,但有时也有些令人迷惑,在这种情况下,他们提出了这一问题——如何掌握 DataGrid 控件的基本功能。
文章假设你已经熟悉该控件——怎样将它添加到一个窗体以及如何设置它来显示数据。你还要知道怎样将它的一行变成可编辑模式和其它的基本任务。最终,你将会发现掌握如何使用模板——向 DataGrid 中添加模板列以及在模板中展示控件——是十分有帮助的。
序言: Windows 窗体 &Web 窗体中的 DataGrid 控件。
Web 窗体中的 DataGrid 控件并不是 Windows 窗体中该控件的等价物,通常认为它们是同一种控件,至少具有相同的功能。但是, Web 窗体的整个编程 Paradigm 和 Windows 窗体有着很大的不同,举个例子来说, Web 窗体页面的每一次处理过程都要回传到服务器,它们必须维护状态,而且具有非常不同的数据绑定模型,如此等等。
正是由于这些不同,使得它们在各自的控件方面也有着很大的差异,包括
DataGrid 控件,一般来说, Web 窗体 DataGrid 控件的内置属性要少一些,下面列出了几个不同之处:
①. 不继承支持主——从数据结构。
②. 和其它 Web 服务器控件一样,它不支持双向的数据绑定。如果你想更新数据,必须要自己写代码。
③. 一次只能编辑一行。
④. 并不继承性也支持排序,尽管你可以通过处理它激发的事件来对网格的内容排序。
另一方面:
①. 你可以将 Web 窗体 DataGrid 控件绑定到任何支持 IEnumerable 接口的对象上。
②. Web 窗体 DataGrid 控件支持分页。
③. 与 Windows 窗体 DataGrid 相比,我们更容易规范 Web 窗体 DataGrid 的外观和数据的输出。
一. 控制列宽度、高度和对齐公式。
默认情况下,DataGrid控件自动调整行和列,使它们适应你指定给它的全部
的高度和宽度。在全部宽度内,它根据列头的文本来控制列的宽度。所有数据默
认都是左对齐的。
为控制列的特性,应该关闭“自动生成列”属性——将 AutoGenerateColumns 属性置为 False. 在实际的使用中,只有在 短期应用 ,如 快速浏览页面 或者演示的时候,才将该属性设为 True. 对于生成应用程序而言,你应该 默认 添加列,每个列可以是绑定列或者模板列 。
为了控制某个列的宽度,可以为该列产生一个样式元素( style-element )然后
将元素的宽度属性设为标准单位,下面给出了一个 项样式 的 width 属性设置
的HTML 代码:
将元素的宽度属性设为标准单位,下面给出了一个 项样式 的 width 属性设置
的HTML 代码:
1<asp: <asp:="" boundcolumn="" datafield="”title”SortExpression=”title”" header="" text="”Title”">
2<itemstyle width="”100px”"></itemstyle>
3
4
5注:可以将 ItemStyle-Width=”100px” 写入 Boundolumn 中。
6
7你可以使用样式元素设置对齐方式,将其设为“左”、“右”或者其它在“水平对齐”集合中定义的值(在 VS 中,每个单独的列对齐方式是可见的)
8
9下面是一个例子:
10
11<asp: boundcolumn="" datafield="”title”" headertext="”Title”" sortexpression="”title”">
12<itemstyle width="”100px”HorizontalAlign=”Right”"></itemstyle>
13
14
15你还可以使用样式元素设定列的高度,你很可能会觉得这没有设定宽度灵活,因为设定某一列的高度也就设定了全部列的高度。
16
17你也可以在运行时通过代码设定宽度,采取这种方式的一个例子就是 ItemGreated 事件句柄,下面的例子将前两列分别设定为 100 和 50 像素。
18
19//C#
20
21Private void DataGrid-ItemCreated(object sender,
22
23System.Web.UI.WebControls.DataGridItemEventArgs e)
24
25{
26
27e.Item.Cells[0]Width=new Unit(100);
28
29e.Item.Cells[1].Width=new Unit(50);
30
31}
32
33当然,将这些可以在设计时就设置好的宽度值通过代码来设置几乎没有任何意义。一般情况下,你可能只是想要基于运行时的值来设定宽度而采取这种方法,你可以将单元格控件的宽度设为标准的单位(往往是像素)。但是,它并不直接将这些长度数据转化为像素——这些仅仅是字符数。然而,当你创建一个项的时候,可以使用这些数据来检查。
34
35(unfinished)
36
37③. 与 Windows 窗体 DataGrid 相比,我们更容易规范 Web 窗体 DataGrid 的外观和数据的输出。
38
39一. 控制列宽度、高度和对齐公式。
40
41默认情况下,DataGrid控件自动调整行和列,使它们适应你指定给它的全部
42
43的高度和宽度。在全部宽度内,它根据列头的文本来控制列的宽度。所有数据默
44
45认都是左对齐的。
46
47为控制列的特性,应该关闭“自动生成列”属性——将 AutoGenerateColumns 属性置为 False. 在实际的使用中,只有在 短期应用 ,如 快速浏览页面 或者演示的时候,才将该属性设为 True. 对于生成应用程序而言,你应该 默认 添加列,每个列可以是绑定列或者模板列 。
48
49为了控制某个列的宽度,可以为该列产生一个样式元素( style-element )然后
50
51将元素的宽度属性设为标准单位,下面给出了一个 项样式 的 width 属性设置
52
53的HTML 代码:
54
55将元素的宽度属性设为标准单位,下面给出了一个 项样式 的 width 属性设置
56
57的HTML 代码:
58
59<asp: <asp:="" boundcolumn="" datafield="”title”SortExpression=”title”" header="" text="”Title”">
60<itemstyle width="”100px”"></itemstyle>
61
62
63注:可以将 ItemStyle-Width=”100px” 写入 Boundolumn 中。
64
65你可以使用样式元素设置对齐方式,将其设为“左”、“右”或者其它在“水平对齐”集合中定义的值(在 VS 中,每个单独的列对齐方式是可见的)
66
67下面是一个例子:
68
69<asp: boundcolumn="" datafield="”title”" headertext="”Title”" sortexpression="”title”">
70<itemstyle width="”100px”HorizontalAlign=”Right”"></itemstyle>
71
72
73你还可以使用样式元素设定列的高度,你很可能会觉得这没有设定宽度灵活,因为设定某一列的高度也就设定了全部列的高度。
74
75你也可以在运行时通过代码设定宽度,采取这种方式的一个例子就是 ItemGreated 事件句柄,下面的例子将前两列分别设定为 100 和 50 像素。
76
77//C#
78
79Private void DataGrid-ItemCreated(object sender,
80
81System.Web.UI.WebControls.DataGridItemEventArgs e)
82
83{
84
85e.Item.Cells[0]Width=new Unit(100);
86
87e.Item.Cells[1].Width=new Unit(50);
88
89}
90
91当然,将这些可以在设计时就设置好的宽度值通过代码来设置几乎没有任何意义。一般情况下,你可能只是想要基于运行时的值来设定宽度而采取这种方法,你可以将单元格控件的宽度设为标准的单位(往往是像素)。但是,它并不直接将这些长度数据转化为像素——这些仅仅是字符数。然而,当你创建一个项的时候,可以使用这些数据来检查。
92
93(unfinished)
94
95③. 与 Windows 窗体 DataGrid 相比,我们更容易规范 Web 窗体 DataGrid 的外观和数据的输出。
96
97一. 控制列宽度、高度和对齐公式。
98
99默认情况下,DataGrid控件自动调整行和列,使它们适应你指定给它的全部
100
101的高度和宽度。在全部宽度内,它根据列头的文本来控制列的宽度。所有数据默
102
103认都是左对齐的。
104
105<</asp:></asp:></asp:></asp:>