如何动态设置 ASP.net 超链接字段的可见性
How to set visibility of ASP.net hyperlinkfield dynamically
我有一个 DataGridView,里面有 ASP.net 个超链接字段。我想要做的是不根据条件显示某个超链接。我有 SQL 确定超链接是否应该隐藏,但我无法让它在超链接中工作。
我尝试 <asp:HyperLinkField....Visible="<%= Eval(Condition) %>" />
我的 SQL 查询中的条件为真或假。
这当然会引发错误 Cannot create an object of type 'System.Boolean' from its string representation '<%= Eval(Condition)%>' for the 'Visible' property
。
所以我从 Why will <%= %> expressions as property values on a server-controls lead to a compile errors? 和其他类似问题中了解到这一点。
我现在的问题是:解决方法是什么?如何根据我的情况让超链接显示或不显示?
我的建议是在代码隐藏中处理它,最有可能处理 RowCreated 事件,并在那里设置控件的 Visible 属性。您的应用程序可能有更多我遗漏的上下文,但这似乎是最简单的方法。
gridview 上的其他事件,以防无法满足您的需求:https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview_events%28v=vs.110%29.aspx
您不能更改 HyperLinkField 在运行时可见,因为它没有 DataBinding 事件。
相反,您不应更改 HyperLinkField 的可见值。问题是如果隐藏单个单元格,列的其余部分将无法正确对齐。
相反,您想使用 TemplateField 和 HyperLink,并且 仅隐藏一个 link (保留 table 单元格本身)。例如,
<asp:TemplateField>
<ItemTemplate>
<asp:HyperLink ID="ConditionHyperLink" runat="server"
Visible='<%# Convert.ToBoolean(Eval("Condition")) %>'
Text="Link" />
</ItemTemplate>
</asp:TemplateField>
仅供参考: 您的语法不正确;应该是 ='<%# Eval("") %>'
我有一个 DataGridView,里面有 ASP.net 个超链接字段。我想要做的是不根据条件显示某个超链接。我有 SQL 确定超链接是否应该隐藏,但我无法让它在超链接中工作。
我尝试 <asp:HyperLinkField....Visible="<%= Eval(Condition) %>" />
我的 SQL 查询中的条件为真或假。
这当然会引发错误 Cannot create an object of type 'System.Boolean' from its string representation '<%= Eval(Condition)%>' for the 'Visible' property
。
所以我从 Why will <%= %> expressions as property values on a server-controls lead to a compile errors? 和其他类似问题中了解到这一点。
我现在的问题是:解决方法是什么?如何根据我的情况让超链接显示或不显示?
我的建议是在代码隐藏中处理它,最有可能处理 RowCreated 事件,并在那里设置控件的 Visible 属性。您的应用程序可能有更多我遗漏的上下文,但这似乎是最简单的方法。
gridview 上的其他事件,以防无法满足您的需求:https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview_events%28v=vs.110%29.aspx
您不能更改 HyperLinkField 在运行时可见,因为它没有 DataBinding 事件。
相反,您不应更改 HyperLinkField 的可见值。问题是如果隐藏单个单元格,列的其余部分将无法正确对齐。
相反,您想使用 TemplateField 和 HyperLink,并且 仅隐藏一个 link (保留 table 单元格本身)。例如,
<asp:TemplateField>
<ItemTemplate>
<asp:HyperLink ID="ConditionHyperLink" runat="server"
Visible='<%# Convert.ToBoolean(Eval("Condition")) %>'
Text="Link" />
</ItemTemplate>
</asp:TemplateField>
仅供参考: 您的语法不正确;应该是 ='<%# Eval("") %>'