Скрыть столбец таблицы во вложенном ListView

У меня есть ListView внутри другого ListView, и я хотел бы скрыть столбец таблицы во внутреннем ListView всякий раз, когда передается конкретный параметр. Учитывая приведенную ниже настройку, как мне скрыть столбец идентификатора (как заголовок, так и данные), если URL-адрес содержит «...? Id = no»?

<asp:ListView ID = "ProcedureListView" runat = "server">
    <LayoutTemplate>
        <asp:PlaceHolder ID = "itemPlaceHolder" runat = "server" />
    </LayoutTemplate>
    <ItemTemplate>
        <h4>
            <%#Eval("PROCEDURE_CODE") %>
        </h4>
        <asp:ListView ID = "BenefitListView" runat = "server" DataSource='<%#Eval("benefits") %>'>
            <LayoutTemplate>
                <table cellpadding = "5" class = "indent">
                    <tr class = "tableHeader">
                        <td>
                            ID
                        </td>
                        <td>
                            Benefit
                        </td>
                    </tr>
                    <asp:PlaceHolder ID = "itemPlaceHolder" runat = "server" />
                </table>
            </LayoutTemplate>
            <ItemTemplate>
                <tr>
                    <td>
                        <%#Eval("benefit_id")%>
                    </td>
                    <td>
                        <%#Eval("benefit_name")%>
                    </td>
                </tr>
            </ItemTemplate>
        </asp:ListView>
    </ItemTemplate>
</asp:ListView>
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
4 193
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

вы можете заключить их в заполнитель, а затем динамически установить видимость заполнителя, чтобы удалить столбец ... (вам понадобятся два заполнителя)

У меня проблемы с динамической частью. Если я помещаю его в заполнитель с именем «myPH», а затем выполняю процедуру ProcedureListView.FindControl («myPH»), он ничего не возвращает.

gfrizzle 23.12.2008 23:52

вы можете разместить свой код позади? как вы привязываете данные своего вложенного ListView?

flesh 24.12.2008 00:37

Моя проблема - вместо этого я должен был пройтись по коллекции элементов, поскольку каждый внутренний элемент управления существует в каждой строке (элементе).

gfrizzle 24.12.2008 19:43

вы можете сделать следующее:

<% if (Request.QueryString["id"] != "no") { %>
   <td>
     <%#Eval("benefit_id")%>
   </td>
<% } %>
   <td>
     <%#Eval("benefit_name")%>
   </td>

и проделайте то же самое с заголовком.

edit: вам не ясно, но из предыдущего комментария, если вы хотите сделать это в коде позади, вы должны поместить заголовок идентификатора и данные идентификатора в элемент управления сервера меток. затем вы можете проверить строку запроса в коде позади, а при привязке данных вы можете установить для свойства visible значение false.

здесь есть несколько вариантов, это действительно зависит от того, что вам удобнее всего.

К сожалению, когда вы пытаетесь сделать это в заголовке, возникает такая ошибка: коллекцию Controls нельзя изменить, потому что элемент управления содержит блоки кода (т.е. <% ...%>).

gfrizzle 24.12.2008 00:01

Изменить ответ: проблема в том, что это вложенный ListView, поэтому я не могу получить доступ к чему-либо внутри него из кода позади. Если бы это был простой ListView, было бы несколько способов сделать это, но все они, похоже, упали во вложенном ListView.

gfrizzle 24.12.2008 00:04

вы имеете в виду, что дизайнер выдает ошибку? так что это означает только то, что вам нужно отредактировать код в представлении html. он должен работать правильно, хотя я еще не пробовал.

Victor 24.12.2008 00:38

вы можете указать, что вы пробовали до сих пор, чтобы ответы не были лишними.

Victor 24.12.2008 00:47

добавьте класс css в теги HTML и из кода вставьте класс css на страницу следующим образом

<td id='' class='hideMe'> 
    ID
</td>

код позади, в событии предварительной отрисовки

if (id==123){
   // please refer to help file for exact syntax
   // but essentially you will be injecting
   // <style type='text/css'>
   // .hideMe{display:none;}
   // </style>
}

В качестве альтернативы вы можете включить указанный выше класс css в свою таблицу стилей и добавлять его только к тегам, которые вы хотите скрыть, на основе идентификатора.

Ответ принят как подходящий

если вы пытаетесь сделать это из кода позади, вы можете сделать это:

В событии onBind для внешнего ListView вы найдете внутренний элемент управления listview, а затем найдете нужную метку и измените свойство visible на false. Я ответил на ваш другой вопрос.

удачи!

Другие вопросы по теме