在网格视图中显示静态超链接

时间:2019-02-06 14:17:37

标签: c# asp.net webforms

我正在从列名称Nature中获取来自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:链接应为“ http://www.this.is.test3

页面上的输出应为:

  

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

如果值是A -----> A(当点击“ A”链接http://www.this.is.test1时应打开)

如果值为Q -----> Q(单击“ Q”链接http://www.this.is.test3时应打开)

我无法显示该值(A,B,C,P,Q ...)和相关链接。

尝试

1。 在Gridview中使用HyperlinkField

<asp:HyperlinkField HeaderText="Nature Link" DataTextField="Nature"
    Visible="true" SortExpression="Nature"
    DataNavigateUrlFormatString="http://www.this.is.{0}"
    DataNavigateUrlFields="Nature" target="_blank"></asp:HyperlinkField>

代码:

protected void dginvoicereport_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType != DataControlRowType.Header)
    {
        var t_nature= Int32.Parse(e.Row.Cells[25].Text.Replace("&nbsp;",""));
        if ((t_nature== 'A') || (t_nature== 'B') || (t_nature== 'C'))
            e.Row.Cells[25].Text = "test1";
        else if ((t_nature== 'X') || (t_nature== 'Y') || (t_nature== 'Z'))
            e.Row.Cells[25].Text = "test2";
    }
}

2。 这个:

<asp:BoundField DataField="nature" HeaderText="Nature Link"
    HtmlEncode="False" DataFormatString="<a target='_blank'
    href='http://www.this.is.{0}'>Link</a>" />    `

1 个答案:

答案 0 :(得分:0)

在后面的代码中创建方法以检查Nature的值并返回所需的链接,如下所示:

protected string GeNatureLink(string nature)
{
    string naturetLink = "http://www.this.is.test1";

    switch (nature)
    {
        case "A": case "B": case "C":
            break;
        case "X": case "Y": case "Z":
            naturetLink = "http://www.this.is.test2";
            break;
        case "P": case "Q": case "R":
            naturetLink = "http://www.this.is.test3";
            break;
        default:
            break;
    }

    return naturetLink;
}

GridView中的TemplateField下添加

<asp:TemplateField>
    <ItemTemplate>
        <asp:HyperLink Target="_blank" ID="hyperlink" NavigateUrl='<%# GeNatureLink(Eval("Title") as string) %>' Text='<%# Eval("Title") %>' runat="server" />
    </ItemTemplate>
</asp:TemplateField>