在上一個學習隨筆中我們可以利用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());
}
這樣在點擊名稱時就可以同時進行選擇,不必再利用選擇列.