超链接网格视图中的列



我使用边界字段来显示列:

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

我有4种类型的账户(a、b、c或d)。我想根据4种不同的帐户类型超链接帐户类型列。基本上,我想链接到4个不同的网页中的一个,这取决于选择的帐户类型。我在Visual Studio 2010中使用C#。如有任何帮助,我们将不胜感激。

使用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;
    }
}

尝试以下

使用代替<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>

最新更新