寻梦岁月
寻梦的岁月不言辛苦几许,不问收获几多…
ASP.NET动态添加DataGrid控件及其成员列
转自- BrittleHeart
DataGrid在Asp.net编程中占有非常重要的地位,对于浏览器中大批量数据的呈现,DataGrid几乎不可缺少。常用的设置DataGrid属性的方法都是在前台由Asp语句实现,这样显然不适合DataGrid的动态加载,通过后台C#代码实现前台的功能显得非常重要,下面就通过一个实例来说明其设置方法。
同其它动态加载服务器控件的方法一样,要在客户端浏览器上呈现DataGrid,必须要有一个Panel容器控件来装载它,生成方法如下:Panel Panel1=new Panel();
必要的话还可以设置该Panel的其它属性,详见附录。
如果Panel的大小不随DataGrid的大小发生变化,则需要加入如下代码:
Panel1.Style["OVERFLOW"]="auto";
创建DataGrid控件:DataGrid myDataGrid=new DataGrid();
如果每一列的数据不是自动载入,而是人工绑定,则需要加入如下代码:
myDataGrid.AutoGenerateColumns=false;
用如下语句设定每一列的标题,绑定的字节,并加入到myDataGrid控件当中:
BoundColumn s1=new BoundColumn();
s1.DataField="EmployeeID";
s1.HeaderText="雇员ID";
myDataGrid.Columns.Add(s1);
myDataGrid的位置通过如下代码设置:
myDataGrid.Style["Position"]="Absolute";
myDataGrid.Style["Left"]="0px";
myDataGrid.Style["Top"]="0px";
其中Left和Top属性是相对于上面Panel1的相对位置。
由于DataGrid的表现非常丰富,因此,其属性设置非常繁杂,包括背景色和字体大小这样细小的环节都可以按照用户的定义设置,其详细的属性设置代码见附录。值得注意的是,CellPadding用于获取或设置单元格的内容和单元格的边框之间的空间量;CellSpacing用来获取或设置单元格间的空间量;SelectedItemStyle用于获取当前选定项的样式属性;ItemStyle用于获取MyDataGrid控件中各项的样式属性;HeaderStyle用于获取MyDataGrid控件中标题部分的样式属性;style属性保证Header标题部分的中文显示在一行之中。
通过如下代码将MyDataGrid控件加入到Panel1中:
Panel1.Controls.Add(myDataGrid);
最后需要连接相关数据库,并将数据库中数据加载到MyDataGrid的数据源中,详见附录。至此就完成了服务器控件DataGrid在后台添加的所有任务。
附录:动态加载DataGrid控件的源代码:
Panel1.Style[
"
Position
"
]
=
"
Absolute
"
;
Panel1.Style[
"
Top
"
]
=
"
30px
"
;
Panel1.Style[
"
Left
"
]
=
"
100px
"
;
Panel1.Style[
"
Width
"
]
=
"
500px
"
;
Panel1.Style[
"
Height
"
]
=
"
300px
"
;
Panel1.Style[
"
OVERFLOW
"
]
=
"
auto
"
;
DataGrid myDataGrid
=
new
DataGrid();
BoundColumn s1
=
new
BoundColumn();
s1.DataField
=
"
EmployeeID
"
;
s1.HeaderText
=
"
雇员ID
"
;
myDataGrid.Columns.Add(s1);
BoundColumn s2
=
new
BoundColumn();
s2.DataField
=
"
LastName
"
;
s2.HeaderText
=
"
姓
"
;
myDataGrid.Columns.Add(s2);
BoundColumn s3
=
new
BoundColumn();
s3.DataField
=
"
FirstName
"
;
s3.HeaderText
=
"
名
"
;
myDataGrid.Columns.Add(s3);
BoundColumn s4
=
new
BoundColumn();
s4.DataField
=
"
Title
"
;
s4.HeaderText
=
"
标题
"
;
myDataGrid.Columns.Add(s4);
BoundColumn s5
=
new
BoundColumn();
s5.DataField
=
"
BirthDate
"
;
s5.HeaderText
=
"
生日
"
;
myDataGrid.Columns.Add(s5);
BoundColumn s6
=
new
BoundColumn();
s6.DataField
=
"
Address
"
;
s6.HeaderText
=
"
地址
"
;
myDataGrid.Columns.Add(s6);
myDataGrid.Style[
"
Position
"
]
=
"
Absolute
"
;
myDataGrid.Style[
"
Left
"
]
=
"
0px
"
;
myDataGrid.Style[
"
Top
"
]
=
"
0px
"
;
myDataGrid.BorderColor
=
Color.FromName(
"
#DEBA84
"
);
myDataGrid.BackColor
=
Color.FromName(
"
#DEBA84
"
);
myDataGrid.Style[
"
BorderStyle
"
]
=
"
None
"
;
myDataGrid.Attributes.Add(
"
BorderStyle
"
,
"
None
"
);
myDataGrid.CellPadding
=
3
;
myDataGrid.CellSpacing
=
2
;
myDataGrid.Attributes.Add(
"
BorderWidth
"
,
"
1px
"
);
myDataGrid.PageSize
=
2
;
myDataGrid.AutoGenerateColumns
=
true
;
myDataGrid.SelectedItemStyle.Font.Bold
=
true
;
myDataGrid.SelectedItemStyle.ForeColor
=
Color.White;
myDataGrid.SelectedItemStyle.BackColor
=
Color.FromName(
"
#738A9C
"
);
myDataGrid.ItemStyle.ForeColor
=
Color.FromName(
"
#8C4510
"
);
myDataGrid.ItemStyle.BackColor
=
Color.FromName(
"
#FFF7E7
"
);
myDataGrid.ItemStyle.HorizontalAlign
=
HorizontalAlign.Center;
myDataGrid.ItemStyle.Wrap
=
false
;
myDataGrid.HeaderStyle.Font.Bold
=
true
;
myDataGrid.HeaderStyle.ForeColor
=
Color.White;
myDataGrid.HeaderStyle.BackColor
=
Color.FromName(
"
#A55129
"
);
myDataGrid.HeaderStyle.HorizontalAlign
=
HorizontalAlign.Center;
myDataGrid.HeaderStyle.Wrap
=
false
;
myDataGrid.AutoGenerateColumns
=
false
;
myDataGrid.HorizontalAlign
=
HorizontalAlign.Center;
myDataGrid.PagerStyle.HorizontalAlign
=
HorizontalAlign.Center;
myDataGrid.PagerStyle.Wrap
=
false
;
myDataGrid.Attributes.Add(
"
style
"
,
"
word-break:keep-all;word-wrap:normal
"
);
Panel1.Controls.Add(myDataGrid);
SqlConnection thisConnection
=
new
SqlConnection (
"
Data Source=(local);Initial Catalog=Northwind;UID=sa;PWD=
"
);
SqlCommand thisCommand
=
thisConnection.CreateCommand ();
try
{
thisConnection.Open ();
}
catch
(Exception ex)
{
thisConnection.Close ();
}
thisCommand.CommandText
=
"
select * from employees
"
;
SqlDataReader sqlDataReader;
sqlDataReader
=
thisCommand.ExecuteReader ();
myDataGrid.DataSource
=
sqlDataReader;
myDataGrid.DataBind();
sqlDataReader.Close();
posted on 2005-08-05 16:44
ffan
阅读(1145)
评论(0)
编辑
收藏
引用
所属分类:
.NET
只有注册用户
登录
后才能发表评论。
Powered by:
IT博客
Copyright © ffan
<
2005年10月
>
日
一
二
三
四
五
六
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
导航
IT博客
首页
新随笔
联系
聚合
管理
统计
随笔 - 62
文章 - 0
评论 - 158
引用 - 0
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(12)
给我留言
查看公开留言
查看私人留言
随笔分类
.NET(7)
(rss)
Assembly(4)
(rss)
C/C++/VC(7)
(rss)
DataBase(14)
(rss)
Installshield(1)
(rss)
JAVA
(rss)
LINUX(1)
(rss)
Other(11)
(rss)
备忘(10)
(rss)
待解决的问题
(rss)
没事闲聊(1)
(rss)
诗词(1)
(rss)
随笔档案
2007年11月 (1)
2007年8月 (1)
2007年7月 (6)
2007年6月 (3)
2007年5月 (1)
2007年4月 (1)
2006年8月 (1)
2006年6月 (1)
2006年4月 (2)
2006年3月 (3)
2006年2月 (2)
2006年1月 (6)
2005年12月 (1)
2005年11月 (4)
2005年10月 (9)
2005年9月 (3)
2005年8月 (15)
2005年7月 (2)
相册
截图
搜索
最新评论
1. re: 日语在线翻译网站大全
对不起,这件事是我错了,没有考虑的公司的利益。只想着自己了。以后一定注意,不再发这样的错误。对不起。
--徐燕
2. re: [VC]Debug版运行正常Release出错的原因和解决方法
我也遇到了,肿么办
--爵士
3. re: [VC]Debug版运行正常Release出错的原因和解决方法
我也遇到这种问题
--爵士
4. re: [VC]Debug版运行正常Release出错的原因和解决方法
Debug
--jh
5. re: 提交表单打开新窗口
fdas
--fdaf
阅读排行榜
1. 日语在线翻译网站大全(59557)
2. GBK 汉字内码扩展规范编码表(一)(39725)
3. SQL SERVER 游标的使用(21619)
4. javascript:回车提交表单(11735)
5. 在vc中创建目录(文件夹) (11321)
评论排行榜
1. 日语在线翻译网站大全(74)
2. javascript:回车提交表单(15)
3. GBK 汉字内码扩展规范编码表(一)(15)
4. 最牛X的SQL语句(11)
5. 中国大部分程序员的通病 [zt](8)