【问题标题】:vb.net inline IF with OR... not evaluatingvb.net 内联 IF 与 OR ...不评估
【发布时间】:2010-03-30 00:23:02
【问题描述】:

我正在解决一个小问题,我试图根据两个标准显示/隐藏面板

  1. 特定数据字段不得为空
  2. 提交的具体数据也不能等于“不可重定位”

不幸的是,这似乎对我不起作用(请注意,设置一个或另一个标准就可以了。)

        <asp:Panel runat="server" Visible='<%#If(Not String.IsNullOrEmpty(DataBinder.Eval(Container.DataItem, "_236")) Or Not DataBinder.Eval(Container.DataItem, "_236") = "Not Relocatable", True, False)%>'>
        <tr>
            <td>
            </td>
            <td class="align-right lightgreen">
                Buyer would consider relocating a business, if it is:
            </td>
            <td>
            </td>
            <td colspan="3">
                <%#DataBinder.Eval(Container.DataItem, "_236")%>
            </td>
            <td>
            </td>
        </tr>
        </asp:Panel>

谁能帮我解决这个问题?

【问题讨论】:

    标签: inline-if


    【解决方案1】:

    &lt;%# %&gt; 语法是 数据绑定 语法,而不是内联表达式语法。您不能像在内联代码&lt;% %&gt; 标签中那样在其中使用过程代码。

    数据绑定标签必须包含一个 EvalBind 函数。如果您需要基于这些函数进行条件分支,则需要使用绑定标签周围的内联代码来完成。

    【讨论】:

    • 我需要能够评估数据绑定内容。如果不使用数据绑定语法,我将如何做到这一点?
    • 另外,这个位工作得很好&lt;asp:Panel runat="server" Visible='&lt;%#If(Not String.IsNullOrEmpty(DataBinder.Eval(Container.DataItem, "_236"), True, False)%&gt;'&gt;
    • 您需要将您的布尔 OR 更改为 If() 语句中两个子句之间的 AND。现在您的陈述是,“如果项目不是空白如果它不是'不可重定位',则显示面板。”如果该项为非空白且等于“不可重定位”,则满足第一个条件,第二个不相关。
    • 有趣的是,第二双眼睛如何使一切变得不同。我自己也犯过很多这样的错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-27
    相关资源
    最近更新 更多