在网格视图中显示特定值的静态超链接

时间:2019-02-25 12:00:03

标签: c# asp.net webforms

我试图显示SQL DB中列名称Nature的值的超链接。 我可以静态显示“自然”特定值的链接。

但是对于某些值,我应该能够仅显示值而无需任何超级链接。

如果自然的价值是

  1. A或B或C:链接应为“ http://www.this.is.test1
  2. X或Y或Z:链接应为“ http://www.this.is.test2
  3. P或Q或R:不应该显示墨水 显示(归档应为text,而不是超链接字段)。

页面上的输出应为:

自然链接(页面上的列名称)

  1. 如果值是A -----> A(当点击“ A”链接http://www.this.is.test1时应打开)
  2. 如果值为Q -----> Q(无链接,文本字段。)

我无法仅显示文本值(对于PQR),并且始终显示为链接。

尝试

在Gridview中使用HyperlinkField:

<asp:TemplateField HeaderText="Nature"><ItemTemplate><asp:HyperLink Target="_blank" ID="nature" NavigateUrl='<%# stauslink_RowDataBound(Eval("nature") as string) %>' Text='<%# Eval("nature") %>' runat="server" /></ItemTemplate></asp:TemplateField>

代码:

Protected string stauslink_RowDataBound(string sts)
        {
            string stslink = "http://www.this.is.test";

            switch (sts)
            {
                case "A":
                case "B":                
                case "C":
                    stslink = "http://www.this.is.test1";
                    break;              
                default:
                    break;
            }

            return stslink;
        }

2 个答案:

答案 0 :(得分:0)

据我所知,您想针对两种不同的情况显示不同的控件。您可以这样编程:在一种情况下显示链接,在另一种情况下显示文本。

要完全隐藏其他各个选项,请使用这样的超链接和占位符控件(在aspx文件中)

<asp:HyperLink runat="server" Visible="<%# Item.MyCondition %>" Text="Click here!" NavigateUrl="<%#: Item.MyLinkUrl %>" />
<asp:PlaceHolder runat="server" Visible="<%# !Item.MyCondition %>">
    <span class="xyz">
        <asp:Literal runat="server" Text="You may not click here!"></asp:Literal>
    </span>
</asp:PlaceHolder>

使用span可以自定义文本样式。

答案 1 :(得分:0)

如下更新null as any方法

stauslink_RowDataBound

在下面的protected string stauslink_RowDataBound(string sts) { if (sts == "A" || sts == "B" || sts == "C") return "http://www.this.is.test1"; else if (sts == "X" || sts == "Y" || sts == "Z") return "http://www.this.is.test2"; else return string.Empty; } 更新GridView中,您将基于链接值拥有TemplateField属性

Visible