ASP.NET 2.0 HtmlTable Rows - скрывается, не делая невидимым - PullRequest
2 голосов
/ 13 января 2009

Мне нужно найти способ скрыть строки (или таблицы) HTML, не блокируя их отображение. Установка this.myTable.Visible = false может показаться наиболее простым способом скрытия таблиц от пользователя, но это предотвращает отправку таблицы HTML в браузер, что вызывает проблему, поскольку я использую Validators и мне необходимо убедиться, что невидимые элементы проверяются (из-за логики навигации по страницам, только некоторые элементы будут видны пользователю одновременно).

Я пытался изменить свойство Style, но asp.net говорит, что оно доступно только для чтения, поэтому я не могу сделать его невидимым с помощью CSS. Также я бы предпочел не использовать Javascript, но если есть простое решение с JS, это хорошо.

Любая помощь очень ценится.

Ответы [ 6 ]

3 голосов
/ 13 января 2009

Вы можете сделать свои <tr> s теги сервера . Для этого измените строки в

<tr id="rowID" runat="server">

Таким образом, вы можете получить доступ к их свойствам, таким как rowID.style или class.

3 голосов
/ 13 января 2009

Вы можете установить эту сторону сервера, добавив свойство display в коллекцию стилей. Само свойство коллекции стилей доступно только для чтения (вы не можете его заменить), но вы можете добавить к нему элемент, отражающий установку этого свойства стиля.

 table.Style.Add("display","none")

или

 table.Style["display"] = "none";

То же самое относится к строкам таблицы, поскольку коллекция стилей наследуется от HtmlGenericControl.

РЕДАКТИРОВАТЬ : для этого элемента управления HTML должен быть runat = "server", который, как я полагаю, ваш, поскольку вы можете установить свойство Visible.

2 голосов
/ 13 января 2009

Чтобы скрыть полную таблицу (но все равно визуализировать ее для клиента), оберните ее в div с помощью style = "display: none":

<div style="display:none;">
 asp.net table goes here
</div>

Хотя для отдельных строк это не работает. Вам, вероятно, придется использовать некоторый JavaScript (например, jquery, как рекомендует другой пользователь).

0 голосов
/ 16 сентября 2009

ребята, даже таблица. Visible = Ложные работы предоставлена вы установили runat = "server" для таблицы конечно

0 голосов
/ 14 января 2009

Спасибо за полезную информацию, ребята. Я смог объединить два из более ранних ответов, чтобы найти отличное решение. Для справки вот это:

Я использовал теги div вокруг таблиц, которые хотел показать и скрыть, как:

<div style="display:none;" id="tblHideItems1" runat="server">

Я ссылался на них в коде, как это:

Definition:
    protected System.Web.UI.HtmlControls.HtmlGenericControl tblHideItems1;

To show:
this.tblHideItems1.Style.Add("display", "inline");

To hide:
this.tblHideItems1.Style.Add("display", "none");

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

Еще раз спасибо за понимание !!

0 голосов
/ 13 января 2009

Помимо использования свойства style, вы всегда можете поместить стиль в элемент либо прямо в самом теге, либо в коде через element.Attributes["style"] = "display: none;";. Чтобы сделать это в коде, вам нужно сделать их серверными элементами управления, добавив runat="server" и установив ID.

...