我有一个我正在处理的Web应用程序(ASP.NET 2.0 C#)。在其中我有一个GridView,其数据源是Oracle数据库。我在代码隐藏中将数据导入gridview,并且不直接设置数据源。
我想创建一个超链接字段(NAME),它将我带到有关特定记录的详细信息页面。最终发生的是它创建了超链接字段以及从数据源获取的常规字段,这是我不想要的。如果我从SELECT语句中删除该字段,则会出现错误,例如:在数据源中找不到“NAME”。
如何消除常规字段,并获取超链接字段?我已经尝试了Gridview.Columns.Remove(columnlocation)
,但这不会起作用,因为最初的列不存在。
请帮助 谢谢。
答案 0 :(得分:4)
取代删除列,禁用gridview的AutoGenerateColumns属性,并手动设置超链接列:
<asp:gridview id="GridView1"
autogeneratecolumns="false"
runat="server">
<asp:HyperLinkField DataNavigateUrlFields="UserID"
DataNavigateUrlFormatString="UserDetails.aspx?id={0}"
DataTextField="UserName" />
</asp:gridview>
答案 1 :(得分:1)
听起来你的网格上AutoGenerateColumns property设置为TRUE。这意味着将为从查询返回的每一列生成一列。
如果你想要一些自定义列,你应该设置AutoGenerateColumns =“false”并将所有列添加到GirdView as asp:BoundField和你的超链接列as asp:TemplateField
让我知道我是不是用这个
这里有一些代码:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="Name" />
<asp:BoundField DataField="Whatever" />
<asp:TemplateField>
<ItemTemplate>
<a href='<%# Eval("UserId", "URL_TO_USER?userId={0}") %>'>Details</a>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>