Преобразование Boundfield в гиперссылку с помощью оператора if - PullRequest
0 голосов
/ 29 августа 2018

Я застрял на этом некоторое время и не могу найти ответы, которые были бы достаточно конкретными, чтобы помочь с моей проблемой. У меня есть привязанная сетка, содержащая заметки, автоматически сгенерированные для разных членов нашей системы crm. Некоторые заметки содержат PDF-файлы (без возможности нажатия, которые нужно скопировать и вставить в другую вкладку в веб-браузере, чтобы открыть), другие - нет, и это просто общие заметки. Мне нужно иметь возможность преобразовать заметку в гиперссылку, если заметка содержит ссылку. До сих пор мне удавалось заставить все заметки выступать в качестве кликабельных ссылок, однако мне действительно нужно там заявление IF. Я новичок, поэтому прошу прощения за любые небольшие проблемы, которые не влияют на эту проблему напрямую.

<asp:TemplateField HeaderStyle-Width="100px">
  <ItemTemplate>
    <asp:LinkButton ID="lnkPDF" runat="server" CausesValidation="False" CommandName="Ir" PostBackUrl='<%# "~/" + Eval("Note") %>' Text="Link to Voucher"></asp:LinkButton>
  </ItemTemplate>
</asp:TemplateField>

1 Ответ

0 голосов
/ 29 августа 2018

Итак, вы можете добиться этого поведения. Я предполагаю, что вы просто запрашиваете условную вещь, чтобы заполнить LinkButtons URL или оставить только текст. Теперь я напишу решение с различными возможностями в соответствии с моим пониманием:

Метод 1
Таким образом, таким образом вы можете проверить, имеет ли ваша граница DataTable нулевые значения, и если она есть, вы можете просто вернуть пустую строку в свойство PostBackUrl.

<asp:LinkButton ID="lnkPDF" runat="server" CausesValidation="False" CommandName="Ir" PostBackUrl='<%#  Eval("Notes") == DBNull.Value ? "" : "~/" + Eval("Note") %>' Text="Link to Voucher"></asp:LinkButton>

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

Метод 2
Таким образом, вы можете настроить свойство Visible элемента. таким образом, вы фактически получите LinkButton элементы управления, которые не были DBNulls

<asp:LinkButton ID="lnkPDF" runat="server" CausesValidation="False" CommandName="Ir" Visible='<%# Eval("Notes") != DBNull.Value %>' PostBackUrl='<%#  Eval("Notes") == DBNull.Value ? "" : "~/" + Eval("Note") %>' Text="Link to Voucher"></asp:LinkButton>

Метод 3
Я рекомендую использовать этот, если вы не очень строгие в отношении серверного элемента управления и хотите, чтобы на экране отображалась «Ссылка на ваучер», и вы не улавливаете этот элемент управления в своем коде позади в событии OnRowCommand.

<a href='<%# Eval("Notes") == DBNull.Value ? "javascript:void(0)" : "~/" + Eval("Notes") %>'>Link to voucher</a>

Причина: просто и прямо.

...