嵌入Xpath代码和内联服务器标记时出错

时间:2011-05-03 09:26:39

标签: asp.net databinder server-tags

网格视图模板字段 -

<% if ((Convert.ToInt64(XPath("NoOfGuests")) < 0))
      { %>
      <asp:ImageButton ID="imgbtnAddResByList" 
                       runat="server" 
                       ImageUrl="~/images/btn-addResByList.PNG" />
      <asp:ImageButton ID="imgbtnCloseResByList" 
                       runat="server" 
                       ImageUrl="~/images/imgdelete.jpg" />
    <%} %>

这会引发运行时错误“Databinder exception ...”。我认为它即将到来,因为我没有在内联代码中使用#。但我不知道如何以及在哪里。我担心的是我不希望在XPath(“NoOfGuests”)&lt; 0但是由于性能问题,我不想在OnDataBound或OnRowCreated中执行此操作。还有其他方法吗?

1 个答案:

答案 0 :(得分:0)

是否可以根据条件评估每个按钮的可见性?例如:

<asp:ImageButton ID="imgbtnAddResByList" runat="server" 
  ImageUrl="~/images/btn-addResByList.PNG"
  Visible='<%# If((Convert.ToInt64(XPath("NoOfGuests")) < 0), "False", "True") %>' />
<asp:ImageButton ID="imgbtnCloseResByList" runat="server" 
  ImageUrl="~/images/imgdelete.jpg"
  Visible='<%# If((Convert.ToInt64(XPath("NoOfGuests")) < 0), "False", "True") %>' />

另外,看起来你没有为你的If语句指定你的条件,所以如果你想坚持你所拥有的,你可能会尝试这样的事情:

<%# If((Convert.ToInt64(XPath("NoOfGuests")) < 0), "{", "") %>
  <asp:ImageButton ID="imgbtnAddResByList" 
                   runat="server" 
                   ImageUrl="~/images/btn-addResByList.PNG" />
  <asp:ImageButton ID="imgbtnCloseResByList" 
                   runat="server" 
                   ImageUrl="~/images/imgdelete.jpg" />
<%# If((Convert.ToInt64(XPath("NoOfGuests")) < 0), "}", "") %>

虽然说实话,但我认为这不会起作用。