GridView中利用隐藏的TemplateFied来进行数据访问

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

在上一个学习随笔中我们可以利用DataKeyNames和DataKeys来进行GridView主键列的数据访问, 在后来试验中,我发现我们可以利用TemplateField来实现其他的数据访问.

<asp:TemplateField Visible="False">

<ItemTemplate>

<asp:Literal id="litUserName" runat="Server" Text='<%#Eval("UserName")%>'/>

</ItemTemplate>

</asp:TemplateField>

//后台实现

String userName = ((Literal)GridView1.SelectedRow.FindControl("litUserName")).Text;

GridView的AutoGenerateSelectButton属性可以直接使表格实现选择, 如果不想多增加一列选择列, 我们可以利用TemplateField实现GridView的选择.

ASP.NET代码如下:

<asp:BoundField DataField="ObjectID" HeaderText="ID"/>

<asp:TemplateField>

<HeaderTemplate>

Name

</HeaderTemplate>

<ItemTemplate>

<asp:LinkButton id="lbName" runat="Server" CommandName="Select">

<%#Eval("Name")%>

</asp:LinkButton>

</ItemTemplate>

</asp:TemplateField>

<asp:BoundField DataField="Status" HeaderText="Status"/>

同时要给GridView增加两个事件处理RowCreated, RowCommand

//RowCreated事件处理

void GridView1_RowCreated(object sender, GridViewRowEventArgs e)

{

if (e.Row.RowType == DataControlRowType.DataRow)

{ ((LinkButton)e.Row.FindControl("lbName")).CommandArgument = e.Row.RowIndex.ToString();

}

}

//RowCommand事件处理

void GridView1_RowCommand(object source, System.Web.UI.WebControls.GridViewCommandEventArgs e)

{

GridView1.SelectedIndex = int.Parse(e.CommandArgument.ToString());

}

这样在点击名称时就可以同时进行选择,不必再利用选择列.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航