0

作業中のWebアプリケーション(ASP.NET 2.0 C#)があります。その中に、データソースがOracleデータベースであるGridViewがあります。コードビハインドのグリッドビューにデータを取得し、データソースを直接設定しません。

特定のレコードに関する詳細ページに移動するハイパーリンクフィールド(NAME)を作成したかったのです。最終的には、ハイパーリンクフィールドと、データソースから取得する通常のフィールドが作成されますが、これは望ましくありません。SELECTステートメントからフィールドを削除すると、「NAME」がデータソースに見つかりませんのようなエラーが表示されます。

通常のフィールドを削除して、代わりにハイパーリンクフィールドを取得するにはどうすればよいですか?試しGridview.Columns.Remove(columnlocation)ましたが、元々列が存在しないため、機能しません。

助けてくださいありがとうございます。

4

2 に答える 2

4

列を削除する代わりに、グリッドビューの 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" を設定し、すべての列を asp:BoundField として GirdView に追加し、ハイパーリンク列を 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 に答える