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 个不同的网页之一。我在 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 回答