Gridview列删除

时间:2009-04-06 20:56:03

标签: c# asp.net gridview field

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

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

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

请帮助 谢谢。

2 个答案:

答案 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>