Отображение статической гиперссылки в виде сетки - PullRequest
0 голосов
/ 06 февраля 2019

Я получаю данные из базы данных SQL с именем столбца Nature, гиперссылка должна определяться на основе значения 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"

Выходные данные на странице должны быть:

Nature Link (имя столбца на странице)

Если значение равно A ----> A (при нажатии на ссылку «A» http://www.this.is.test1 должно открыться)

Если значение равно Q -----> Q (при нажатии на ссылку «Q» http://www.this.is.test3 должен открыться)

Я не могу отобразить значение (A, B, C, P, Q ....) и связанную с ним ссылку.

Tried

1. Использование HyperlinkField в Gridview

<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 голосов
/ 06 февраля 2019

Создайте метод в коде, чтобы проверить значение 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...