Ошибка при внедрении кода Xpath и встроенных тегов сервера

#asp.net #databinder #server-tags

#asp.net #databinder #серверные теги

Вопрос:

Поле шаблона для просмотра сетки —

 <% 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 …». Я думаю, это происходит потому, что я не использовал # во встроенном коде. Но я не знаю, как и где. Меня беспокоит то, что я не хочу отображать там две кнопки изображения, когда XPath («NoOfGuests») < 0, но я не хочу делать это в OnDataBound или OnRowCreated из-за проблемы с производительностью.Есть ли другой способ??

Комментарии:

1. Вы, скорее всего, получите помощь, если добавите остальную часть исключения.

Ответ №1:

Сработает ли оценка видимости каждой кнопки с условием? Например:

 <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), "}", "") %>
  

Хотя, честно говоря, я не думаю, что это сработает.