asp.net中DataGrid双行跨列跨行复杂表头设计心得!
2024-07-10 13:03:51
供稿:网友
一、datagrid的属性设置
1. allowpaging: true
2. pagestyle->position: topandbottom
3. 可选:pagestyle->horizonalign: center(使文本居中显示)
4. 可选:itemstyle->horizonalign: center(使文本居中显示)
二、代码部分
1.首先,使datagrid绑定数据库中某个表,例如:
private void page_load(object sender, system.eventargs e)
{
// 在此处放置用户代码以初始化页面
if(!ispostback)
{
sqlconnection myconn=new sqlconnection("server=localhost;uid=sa;pwd=sa;database=db_test");
sqldataadapter da=new sqldataadapter("select * from 个人",myconn);
dataset ds=new dataset();
da.fill(ds,"gr");
dggeren.datasource=ds.tables["gr"].defaultview;
dggeren.databind();
}
2.为datagrid添加itemcreated事件的处理函数、
3.为了判断datagrid中的两个(上下)pager的位置,我们可以使用一个全局变量来判断。
定义一个全局变量 private int m_createpagetimes = 0;
4.为datagrid的itemcreated事件的处理函数添加内容,如下:
private void dggeren_itemcreated(object sender, system.web.ui.webcontrols.datagriditemeventargs e)
{
switch(e.item.itemtype)
{
//case(listitemtype.pager):
case listitemtype.pager:
{
if(m_createpagetimes == 0)
{
datagriditem row=(datagriditem)e.item;
row.cells.clear();
//row.backcolor=color.navy; //背景色
//row.forecolor=color.red; //前景色
row.horizontalalign=horizontalalign.center;//使文本居中显示
tablecell cell0=new tablecell();
cell0.rowspan=2;
cell0.controls.add(new literalcontrol("姓名"));
tablecell cell1=new tablecell();
cell1.columnspan=2; //默认的columnspan值为1
cell1.text="住房地址信息";
//也可如此:cell1.controls.add(new literalcontrol("住房地址信息"));
//tablecell cell2=new tablecell();
//cell2.controls.add(new literalcontrol(""));
tablecell cell2=new tablecell();
cell2.rowspan=2;
cell2.text="出生日期";
row.cells.add(cell0);
row.cells.add(cell1);
row.cells.add(cell2);
m_createpagetimes++;
}
break;
}
case listitemtype.header:
{
datagriditem head=(datagriditem)e.item;
head.cells.clear();
//head.verticalalign=verticalalign.middle;
//head.horizontalalign=horizontalalign.center;
//tablecell cell00=new tablecell();
//cell00.rowspan=2;
//cell00.text="姓名";
tablecell cell01=new tablecell();
cell01.text="楼号";
tablecell cell02=new tablecell();
cell02.text="房号";
//tablecell cell03=new tablecell();
//cell03.text="出生日期";
//head.cells.add(cell00);
head.cells.add(cell01);
head.cells.add(cell02);
//head.cells.add(cell03);
break;
}
}
}
三、最后效果如下图:
四、望大家指点!