【发布时间】:2018-03-05 02:05:39
【问题描述】:
我有一个 ASP.Net 数据绑定的 GridView,我希望在单击一行时打开一个传递所选行 ID 的 URL。 ID 是数据库表中的一列,但是我不想向用户显示它。
如果我将 ID 列的可见性设置为 false,它不会用数据填充该列。即e.Row.Cells[0].Text 返回一个空字符串。
以下代码正在运行,但我想使用 ID 列不显示。
在 .aspx 文件中:
<asp:GridView
id="GridViewTest"
runat="server"
DataSourceID="sqlSource"
AutoGenerateColumns="false"
OnRowDataBound="GridViewTest_RowDataBound"
>
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID"/>
<asp:BoundField DataField="DisplayName" HeaderText="Name" />
</Columns>
</asp:GridView>
在 .cs 文件中:
protected void GridViewTest_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes["onclick"] = $"location.href = 'default.aspx?appID={e.Row.Cells[0].Text}'";
e.Row.Attributes["style"] = "cursor:pointer";
}
}
【问题讨论】:
-
为什么不用itemtemplate?如果不想显示ID,可以加一个style属性display:none
-
更新了我的答案(再次)。