Если оператор внутри ListView с Eval () или DataBinder.Eval ()? - PullRequest
4 голосов
/ 11 ноября 2010

У меня есть элемент управления списком на странице .aspx. Внутри этого списка я хочу проверить свойство «Тип», которое поступает из базы данных. Вот пример кода:

 <ItemTemplate>
         <%# if(Convert.ToInt32(DataBinder.Eval(Container.DataItem,"Type")) == 0){ %>
            <tr class="item">
                <td>
                    <%# Convert.ToDateTime(Eval("WorkDate")).ToShortDateString() %>
                </td>
                <td style="text-align: center;">
                    <%# Eval("SkillName") %>
                </td>
             </tr>
         <%# } else if (Convert.ToInt32(DataBinder.Eval(Container.DataItem,"Type")) == 1) {%>
             <tr class="item">
                <td colspan="2">
                    <strong><%# Convert.ToDateTime(Eval("WorkDate")).ToShortDateString() %></strong>
                </td>
             </tr>
          <% } %>
  </ItemTemplate>

В качестве крайней меры я попытался использовать DataBinder.Eval (), но я получил исключение "Ожидаемый класс, делегат, перечисление, интерфейс или структура". Что я могу делать не так? Написание функции в программном коде не вариант для меня. Есть ли способ добиться этого?

Ответы [ 3 ]

4 голосов
/ 11 ноября 2010

Вот полный код, причудливый и короткий.

 <ItemTemplate>
         <tr class="item">
            <td colspan="<%# Eval(Container.DataItem,"Type")) == 0 ? 1:2%>">
                <strong><%# Convert.ToDateTime(Eval("WorkDate")).ToShortDateString() %></strong>
            </td>
             <td style="text-align: center;" visible="<%# Eval(Container.DataItem,"Type")) == 1>">
                <%# Eval("SkillName") %>
            </td>
        </tr>
 </ItemTemplate>
2 голосов
/ 11 ноября 2010

Не проверено, поскольку у меня нет доступной Visual Studio на данный момент, но, поскольку HtmlTableRow имеет свойство Visible, должно работать следующее:

<tr class="item" runat="server" Visible='<%# Convert.ToInt32(Eval("Type")) == 0 %>'>
    ...
</tr>
0 голосов
/ 11 ноября 2010

да, вам придется делать некоторые сценарии на стороне клиента, хотя ... я бы предложил jquery ..

вы бы в основном перебирали все строки в jquery и, основываясь на данных в строке, вы могли бы изменить innerhtml объекта строки на основе селектора ".item", чтобы определить, должен ли он быть в одном формат или другой.

...