0

我有一个正在开发的 Web 应用程序(ASP.NET 2.0 C#)。其中我有一个 GridView,其数据源是 Oracle 数据库。我将数据放入我的代码隐藏中的网格视图中,并且不直接设置数据源。

我想创建一个超链接字段 (NAME),将我带到有关特定记录的详细信息页面。最终发生的是它创建了超链接字段以及它从数据源获取的常规字段,这是我不想要的。如果我从我的 SELECT 语句中删除该字段,它会给出一个错误,例如:在数据源中找不到“NAME”。

如何消除常规字段,并获得超链接字段?我试过Gridview.Columns.Remove(columnlocation)了,但这不起作用,因为这些列最初不存在。

请帮忙谢谢。

4

2 回答 2

4

不要删除列,而是禁用 gridview 的 AutoGenerateColumns 属性并像这样手动设置超链接列:

<asp:gridview id="GridView1" 
    autogeneratecolumns="false"
    runat="server">                
        <asp:HyperLinkField DataNavigateUrlFields="UserID" 
            DataNavigateUrlFormatString="UserDetails.aspx?id={0}"
            DataTextField="UserName" />
</asp:gridview>
于 2009-04-06T21:06:58.103 回答
1

听起来您在网格上将AutoGenerateColumns 属性设置为 TRUE。这意味着为您从查询返回的每一列生成一列。

如果您想要一些自定义列,您应该设置 AutoGenerateColumns="false" 并将所有列添加到 GirdView 作为 asp:BoundField 和您的 Hyperlink 列作为 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>
于 2009-04-06T21:08:46.163 回答