【问题标题】:Converting Boundfield to hyperlink with if statement使用 if 语句将 Boundfield 转换为超链接
【发布时间】:2019-02-04 11:43:54
【问题描述】:

我已经被这个问题困扰了一段时间,找不到任何足够具体的答案来帮助解决我的问题。 我有一个绑定的网格,其中包含为我们的 crm 系统的不同成员自动生成的注释。有些笔记包含 PDF -(不可点击,您必须复制并粘贴到 Web 浏览器上的另一个选项卡中才能打开),而其他笔记则不包含,只是一般笔记。如果笔记包含链接,我需要能够将笔记转换为超链接。 到目前为止,我已经设法将所有注释作为可点击的链接出现,但我也确实需要其中的 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>

【问题讨论】:

  • 您是否尝试过 Visible 属性并使用 Eval 进行设置?
  • 为什么不使用条件运算符?

标签: asp.net vb.net data-binding hyperlink


【解决方案1】:

因此,您可以实现此行为。我假设您只是要求一个有条件的东西来填充 LinkButtons 与 url 或只留下文本。现在我将根据我的理解编写不同可能性的解决方案:

方法一
因此,通过这种方式,您可以检查绑定的 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>

注意:如果您使用此方法,您仍然会有回发。并且未获取或为空的链接仍将在网页上具有相应的锚元素,这将带您无处可去。

方法二
通过这种方式,您可以使用元素的 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>

原因:简单直接。

【讨论】:

  • 感谢您的解决方案。我可以请您澄清一下您发布的最后一种方法吗?当我将代码复制并粘贴到 Visual Studio 中时,javascript 出错(我根本不知道 Javascript,只是标准代码),我宁愿了解它的含义,也不愿使用我不懂的代码来修复问题!谢谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-09
  • 2023-04-08
  • 2015-02-08
  • 2014-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多