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

Я пытаюсь отобразить гиперссылку для значений из базы данных SQL для имени столбца Nature.Я могу статически отображать ссылки для определенных значений природы.

Но для определенных значений я должен иметь возможность отображать только значения без какой-либо гиперссылки.

Если значение природы

  1. A или B или C: ссылка должна быть "http://www.this.is.test1"
  2. X или Y или Z: ссылка должна быть" http://www.this.is.test2"
  3. P или Qили R: чернила не должны отображаться. Должно отображаться значение (поле должно быть текстом, а не полем гиперссылки).

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

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

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

Я не могу отобразить только текстовое значение (для PQR), и оно всегда отображается в виде ссылки.

Tried

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

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

Обновите 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, основанное на значении ссылки

<asp:TemplateField HeaderText="Nature">
    <ItemTemplate>
        <asp:HyperLink Target="_blank" ID="nature" NavigateUrl='<%# stauslink_RowDataBound(Eval("nature") as string) %>' Text='<%# Eval("nature") %>' Visible='<%# !string.IsNullOrEmpty(stauslink_RowDataBound(Eval("nature") as string)) %>' runat="server" />
        <asp:Literal ID="Literal1" runat="server" Text='<%# Eval("nature") %>' Visible='<%# string.IsNullOrEmpty(stauslink_RowDataBound(Eval("nature") as string)) %>'></asp:Literal>
    </ItemTemplate>
</asp:TemplateField>
0 голосов
/ 25 февраля 2019

Насколько я вижу, вы хотите отобразить разные элементы управления для двух разных случаев.Вы можете запрограммировать их следующим образом: Показать ссылку в одном случае, показать текст в другом случае.

Чтобы полностью скрыть соответствующую другую опцию, используйте элемент управления гиперссылкой и заполнителем, как этот(в файле 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 позволяет настраивать стиль текста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...