欢迎光临
我们一直在努力

如何给DataGrid添加两个的题头分类显示-.NET教程,数据库应用

建站超值云服务器,限时71元/月

我在写powerdatagrid想到要提供一个查询(有关powerdatagrid的详细信息参考csdn论坛中的讨论帖,源码可以在www.foxhis.com/powermjtest/sharepowerdatagrid.rar下载),该查询的构想是这样的:我的这个控件可以通过指定一个sql语句来显示该语句的内容(其他的功能不叙述了,这不是重点),那么我可以封装一组ui到这个控件里面来实现查询的功能,问题出来了,这个查询通常情况下应该在datagrid的上面也就是查询结果的上面,我要怎么才能保留原来的题头同时再添加一个题头呢(双题头)?

问题出来了,改如何解决呢?想了好多办法都不行,如果要将header重画,那么还要处理排序是前后台的交互问题,那么只能再保留原来header不动的基础上添加新的header。无意中发现在分页的时候可以有几种分页显示的方法,在分页面板里面有一个选现可以选择分页的位置,可以选择上下型,在选择这个类型的时候datagrid在原来的header上面又多了一行,我们今天就利用这一行来完成我们的任务,今天我们不产生查询的ui而是产生一个分类的题头,我们使用测试数据库northwind中的employees来显示数据,首先我们要做的是绑定数据绑定代码如下:

sqlconnection con = new sqlconnection("server=localhost;database=northwind;uid=sa;pwd=;");

sqldataadapter da = new sqldataadapter("select lastname+ +firstname as name, birthdate, country, title, hiredate from employees",con);

datatable dt = new datatable();

da.fill(dt);

this.datagrid1.datasource = dt;

this.datagrid1.databind();

}

接着我们在itemcreated里面添加适当的代码来完成我们的任务,在powerdatagrid该事件处理函数里面已经添加了创建一个自定义分页的ui!如果你在powerdatagrid里面添加需要判断两个(上下)pager的位置,我们可以使用一个全局变量来判断。

定义一个全局变量 private int m_createpagetimes = 0;

然后我们为该事件处理函数添加如下代码:

private int m_createpagetimes = 0;

private void datagrid1_itemcreated(object sender, system.web.ui.webcontrols.datagriditemeventargs e) {

listitemtype elemtype = e.item.itemtype;

if (elemtype == listitemtype.pager) {

if (m_createpagetimes == 0) {

tablecell cellperson = (tablecell) e.item.controls[0];

cellperson.controls.clear();

cellperson.backcolor = color.navy;

cellperson.forecolor = color.yellow;

cellperson.columnspan = 3;

cellperson.horizontalalign = horizontalalign.center;

cellperson.controls.add(new literalcontrol("个人信息"));

tablecell celljob = new tablecell();

celljob.backcolor = color.navy;

celljob.forecolor = color.yellow;

celljob.columnspan = 2;

celljob.horizontalalign = horizontalalign.center;

celljob.controls.add(new literalcontrol("工作信息"));

e.item.controls.add(celljob);

m_createpagetimes ++;

}else if(m_createpagetimes ==1){

// create custom pager ui

}

}

最后是datagrid的html部分的代码如下:

<asp:datagrid id="datagrid1" runat="server" allowpaging="true" autogeneratecolumns="false" width="100%"

pagesize="2">

<columns>

<asp:boundcolumn datafield="name" headertext="姓名"></asp:boundcolumn>

<asp:boundcolumn datafield="birthdate" headertext="生日"></asp:boundcolumn>

<asp:boundcolumn datafield="country" headertext="国家"></asp:boundcolumn>

<asp:boundcolumn datafield="title" headertext="头衔"></asp:boundcolumn>

<asp:boundcolumn datafield="hiredate" headertext="雇佣日期"></asp:boundcolumn>

</columns>

<pagerstyle position="topandbottom" mode="numericpages"></pagerstyle>

</asp:datagrid>

运行效果如下所示:

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 如何给DataGrid添加两个的题头分类显示-.NET教程,数据库应用
分享到: 更多 (0)