欢迎光临
我们一直在努力

DataGrid的几个小技巧!-.NET教程,数据库应用

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

方法一:使用模版列

我们在绑定好数据的datagrid增加一个模版列,在列中放置一个按钮

<asp:templatecolumn>

<itemtemplate>

<asp:button id="btndelete" runat="server" text="删除"></asp:button>

</itemtemplate>

</asp:templatecolumn>

然后我们在datagrid的itemdatabound中添加以下代码

switch(e.item.itemtype)

{

case(listitemtype.item):

case(listitemtype.alternatingitem):

{

button btn=(button)e.item.findcontrol("btndelete");

btn.attributes.add("onclick","return window.confirm(fs)");

break;

}

}

datagrid在绑定数据的时候将触发此事件,而且每行触发一次.我们可以通过e.item获得行,而通过e.item.itemtype获得行类型.

方法二:使用按钮列

我们在绑定好数据的datagrid增加一个删除按钮列

<asp:buttoncolumn text="删除" commandname="delete"></asp:buttoncolumn>

然后我们在datagrid的itemdatabound中添加以下代码

switch(e.item.itemtype)

{

case(listitemtype.item):

case(listitemtype.alternatingitem):

{

linkbutton btn=(linkbutton)e.item.cells[4].controls[0];

btn.attributes.add("onclick","return window.confirm(fs)");

break;

}

}

可以看到我们这里获得控件引用的方法有所不同,使用了e.item.cells[4].controls[0],而没有使用e.item.findcontrol("btndelete"),因为我

们现在使用的是按钮列,不能对按钮列的按钮设置id属性,而findcontrol是通过id来查找控件(当然我们也可以把前面的代码用

e.item.cells[4].controls[0]的代码来替换.).

添加序号列

绑定好一个datagrid

switch(e.item.itemtype)

{

case(listitemtype.item):

case(listitemtype.alternatingitem):

{

datagriditem row=(datagriditem)e.item;

tablecell cell=new tablecell();

cell.controls.add(new literalcontrol((e.item.itemindex+1).tostring()));

row.cells.addat(0,cell);

break;

}

case(listitemtype.header):

{

datagriditem row=(datagriditem)e.item;

tablecell cell=new tablecell();

cell.controls.add(new literalcontrol("序号"));

row.cells.addat(0,cell);

break;

}

}

这里我们用到了e.item.itemindex,获取来自 datagrid 控件的 items 集合的 datagriditem 对象的索引.

产生两行的标题行

绑定好一个datagrid,设置允许分页,设置页导航为上下型,一会我们将强制把上面的页导航更换成标题行.这里我想讲一下datagrid的行构成

最上面pager,用来放置分页导航,然后是表头header,接着是item和alternatingitem项目和交替项目(当然还有selecteditem选中项和edititem

编辑项等),然后是footer表脚,最下面还有一个pager.因为pager行是系统自动产生的,所以在itemdatabound事件中不能捕获此行,这里我使用了

itemcreated事件,添加代码如下

switch(e.item.itemtype)

{

case(listitemtype.pager):

{

if(first)

{

datagriditem row=(datagriditem)e.item;

row.cells.clear();

tablecell cell0=new tablecell();

cell0.controls.add(new literalcontrol("id"));

tablecell cell1=new tablecell();

cell1.columnspan=2;

cell1.controls.add(new literalcontrol("fullname"));

row.cells.add(cell0);

row.cells.add(cell1);

}

first=!first;

break;

}

}

这里的first用来判断是上面的pager还是下面的pager.

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

相关推荐

  • 暂无文章