【问题标题】:Gridview Column RemovingGridview 列删除
【发布时间】:2009-04-06 20:56:02
【问题描述】:

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

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

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

请帮忙 谢谢。

【问题讨论】:

    标签: c# asp.net gridview field


    【解决方案1】:

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

    <asp:gridview id="GridView1" 
        autogeneratecolumns="false"
        runat="server">                
            <asp:HyperLinkField DataNavigateUrlFields="UserID" 
                DataNavigateUrlFormatString="UserDetails.aspx?id={0}"
                DataTextField="UserName" />
    </asp:gridview>
    

    【讨论】:

      【解决方案2】:

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

      如果您想要一些自定义列,您应该设置 AutoGenerateColumns="false" 并将所有列添加到 GirdView 作为 asp:BoundField 和您的超链接列作为 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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-13
        • 1970-01-01
        • 2013-03-02
        相关资源
        最近更新 更多