boundcolumn 最主要的功能是利用linkbutton 或pushbutton 来显示数据源中的一个字段内容,并且可以触发datagrid web 控件的事件。其使用语法如下所示:
<asp:buttoncolumn
buttontype="linkbutton | pushbutton"
commandname="命令名称"
datatextfield="datasourcefield"
datatextformatstring="formatstring"
footertext="footertext"
headerimageurl="url"
headertext="headertext"
readonly="true | false"
sortfield="datasourcefieldtosortby"
text="buttoncaption"
visible="true | false"
/>
其中除了共同基础属性以及样式对象外,常用的属性如下表所示:
下列程序代码范例以boundcolumn 来显示字段内容,并且显示使用者点选了哪一笔记录:
<%@import namespace=system.data.ado%>
<%@import namespace=system.data%>
<!--#include file="gettable.inc"-->
<html>
<form runat="server">
<asp:datagrid id="dga" allowpaging="true" pagesize="5"
onpageindexchanged="dga_pagechg" runat="server"
pagerstyle-mode="numericpages" bordercolor="#808080"
headerstyle-font-names="courier new"
headerstyle-backcolor="#d1dceb"
headerstyle-font-bold="true" headerstyle-horizontalalign="center"
autogeneratecolumns="false"
onitemcommand="dga_icmd">
<property name="columns">
<asp: buttoncolumn
headertext="姓名"
datatextfield="username"/>
<asp:boundcolumn
headertext="电话"
datafield="usertel"/>
<asp:boundcolumn
headertext="住址"
datafield="useradd"/>
</property>
</asp:datagrid>
</form>
<asp:label id="label1" runat="server"/>
<script language="vb" runat="server">
sub page_load(sender as object, e as eventargs)
if page.ispostback=false then
dim dtdatatable as datatable=gettable("ch08\myweb.mdb", "members")
dga.datasource=dtdatatable.defaultview
page.databind()
end if
label1.text="您目前没有点选任何记录."
end sub
sub dga_pagechg(sender as object, e as datagridpagechangedeventargs)
dim dtdatatable as datatable=gettable("ch08\myweb.mdb", "members")
dga.datasource=dtdatatable.defaultview
page.databind()
end sub
sub dga_icmd(sender as object, e as datagridcommandeventargs)
dim shtrow as short= e.item.itemindex+1
if shtrow<>0 then
label1.text="您点选了第" & shtrow.tostring() & _
" 个字段的数据, 这<br>笔数据在数据源中是第"
label1.text+=((dga.currentpageindex * dga.pagesize) +
shtrow).tostring & _
"笔记录."
end if
end sub
</script>
</html>

上述范例我们指定datagrid web 控件的onitemcommand 属性为dga_icmd,表示按下显示
使用者名称的buttoncolumn 时会触发dga_ccmd 事件,并且执行dga_icmd 事件程序;如下
程序代码片段所示:
sub dga_icmd(sender as object, e as datagridcommandeventargs)
dim shtrow as short= e.item.itemindex+1
if shtrow<>0 then
label1.text="您点选了第" & shtrow.tostring() & _
" 个字段的数据, 这<br>笔数据在数据源中是第"
label1.text+=((dga.currentpageindex * dga.pagesize) +
shtrow).tostring & _
"笔记录."
end if
end sub
在这个事件程序中,我们利用e.item.itemindex 属性取得使用者点选了第几个项目的index 值;
由于index 由0 开始,所以我们加上1 表示点选了第几个项目。如果没有任何项目被点选,则
e.item.itemindex 属性传回-1。由于变量shtrow 为e.item.itemindex 加1 的结果,所以我们藉
由判断变量shtrow 是否为0 来得知使用者是否有选择选项。

因为e.item.itemindex 属性传回的是使用者在datagrid web 控件上所点选的项目,并不是记录
在数据源的地址;所以我们透过计算目前的页数索引乘以每页的纪录笔数后,再加上目前所在的
字段即可得到该笔数据在数据源中的实际地址。所以使用者若点选了第六页的第四个字段,表达
式则为(5*5)+4,结果29 就是记录在数据源的实际顺序。
若要取得该笔记录在数据源中的索引值,由于index 值是由0 开始计数,所以只要再减去1 即可。