ASP.NET Использование оператора If с контейнером в виде списка - PullRequest
1 голос
/ 08 июня 2009

В моем ListView я хочу использовать свойство контейнера в операторе if на странице aspx, как показано ниже. Но я получаю сообщение об ошибке «Имя« Контейнер »не существует в текущем контексте». Могу ли я не использовать контейнер в операторе if?

   <ItemTemplate>
        <tr>
          <td>
            <% if (EDIT_INDEX == (((ListViewItem)Container) as ListViewDataItem).DataItemIndex )
               {%>
            <span id="row<%#(((ListViewItem)Container) as ListViewDataItem).DataItemIndex %>"
Some Stuff
       </span>
<% } %>

1 Ответ

8 голосов
/ 08 июня 2009

Container доступно только в обязательных выражениях. Используйте блок <%# .. %> с троичным оператором (?:) и конкатенацию строк для достижения того же результата.

Другое решение, которое я использовал, - это помещать вещи в разные <asp:Placeholder> элементы управления, чьи свойства Visible связаны с различными логическими выражениями, и помещать разные возможные представления внутри этих заполнителей. Что-то вроде:

<ItemTemplate>
    <tr>
      <td>
   <asp:Placeholder runat="server" 
    Visible='<%# EDIT_INDEX == (((ListViewItem)Container) as ListViewDataItem).DataItemIndex %>'>
        <span id='row<%#(((ListViewItem)Container) as ListViewDataItem).DataItemIndex %>'>
            Some Stuff
        </span>
   </asp:Placeholder>
...