我使用边界字段来显示列:
<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>