0

列を表示するためにboundfieldを使用しています:

<Columns>
<asp:BoundField  DataField=”AccountCode” HeaderText=”Account Code”&gt;
    <ItemStyle Font-Size=”Large” />
</asp:BoundField>
<asp:BoundField  DataField=”AccountName” HeaderText=”Account Name”      
        FooterText=”Enter Footer Text”&gt;
    <FooterStyle CssClass=”FooterStyle” />
</asp:BoundField >
<asp:BoundField  DataField=”Type” HeaderText=”Account Type” />

私は 4 種類のアカウント (a、b、c、または d) を持っています。4 つの異なるアカウント タイプに基づいてアカウント タイプ列をハイパーリンクしたいと思います。基本的に、選択したアカウントの種類に応じて、4 つの異なる Web ページのいずれかにリンクしたいと考えています。Visual Studio 2010 で C# を使用しています。

4

2 に答える 2

1

そのためにHyperLinkFieldを使用します。

<asp:HyperLinkField HeaderText="Account Type"
    DataTextField="Type"
    DataTextFormatString="{0}"
    DataNavigateUrlFields="TypeID"
    DataNavigateUrlFormatString="~\AccountType.aspx?type={0}"          
    Target="_blank" />

または、アカウントの種類ごとに完全に異なる URL がある場合は、TemplateFieldを使用します。URL の選択にはいくつかのロジックが含まれるため、ここのコード ビハインドに移動しました。

<asp:TemplateField HeaderText="Account Type">
    <ItemTemplate>
        <asp:HyperLink runat="server"
            Text="Type"
            NavigateUrl='<%# GetAccountTypeUrl(Eval("Type")) %>' />
    </ItemTemplate>
</asp:TemplateField>

GetAccountTypeUrlコードビハインドのメソッド:

protected string GetAccountTypeUrl(object typeName)
{
    string type = typeName as string;

    switch (type)
    {
        case "a":
            return "url_a";
        case "b":
            return "url_b";
        case "c":
            return "url_c";
        case "d":
            return "url_d";
        default:
            return string.Empty;
    }
}
于 2012-08-21T14:37:53.463 に答える
0

次を試してください

<asp:BoundField DataField=”Type” HeaderText=”Account Type” />使用する代わりに

<asp:TemplateField HeaderText="Account Type">
<ItemTemplate>
   <a href='<%# String.Format("~/AccountType.aspx?type={0}", Eval("Type")) %>'><%# Eval("Type") %></a>
</ItemTemplate>
</asp:TemplateField>
于 2012-08-21T14:50:14.767 に答える