Мне нужно найти способ скрыть HTML-строки (или таблицы) от просмотра, не блокируя их отрисовку. Установка this.myTable.Visible = false может показаться самым простым способом скрыть таблицы от пользователя, но это предотвращает отправку таблицы HTML в браузер, что вызывает проблему, потому что я использую валидаторы и мне нужно убедиться, что Невидимые элементы проверяются (из-за логики навигации по страницам, только некоторые элементы будут отображаться для пользователя одновременно).
Я пытался изменить свойство Style, но asp.net говорит, что он доступен только для чтения, поэтому я не могу сделать его невидимым с помощью CSS. Также я бы предпочел не использовать Javascript, но если есть простое решение с JS, это нормально.
Любая помощь приветствуется.






Чтобы скрыть полную таблицу (но по-прежнему отображать ее для клиента), оберните ее в div с style = "display: none":
<div style = "display:none;">
asp.net table goes here
</div>
Хотя для одиночных строк это не работает. Возможно, вам придется использовать какой-нибудь javascript (например, jquery, как рекомендовал другой пользователь).
Вы можете установить это на стороне сервера, добавив свойство display в коллекцию стилей. Само свойство коллекции стилей доступно только для чтения (вы не можете его заменить), но вы можете добавить к нему элемент, чтобы отразить установку этого свойства стиля.
table.Style.Add("display","none")
или же
table.Style["display"] = "none";
То же самое верно и для строк таблицы, поскольку коллекция стилей унаследована от HtmlGenericControl.
РЕДАКТИРОВАТЬ: HTML-элемент управления должен быть runat = "server", чтобы это работало, что, как я предполагаю, принадлежит вам, поскольку вы можете установить свойство Visible.
Вы можете сделать свой <tr> s серверные теги. Для этого измените свои строки в
<tr id = "rowID" runat = "server">
Таким образом, вы можете получить доступ к их свойствам, таким как свойства rowID.style или class.
Помимо использования свойства стиля, вы всегда можете поместить стиль в элемент либо прямо на самом теге, либо в коде через element.Attributes["style"] = "display: none;";. Чтобы сделать это в коде, вам нужно сделать их серверными элементами управления, добавив runat = "server" и установив идентификатор.
Спасибо за полезную информацию, ребята. Мне удалось объединить два предыдущих ответа, чтобы придумать отличное решение. Для справки вот это:
Я использовал теги 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");
Это позволяет мне отображать или скрывать таблицы, не занимая пустого места на странице, когда они скрыты, но все же отображать их, чтобы они работали с элементами управления валидацией (это была моя конечная цель) при скрытии или отображении. Тег стиля в определении может не понадобиться, но, поскольку он работает сейчас, я, вероятно, просто оставлю его, поскольку он изменяется во время выполнения.
Еще раз спасибо за понимание !!
ребята даже table.Visible = Ложь работает при условии вы установили runat = "server" для таблицы конечно
Ссылка должна была быть на Control.Visible свойство
Свойство [Control.Visible] [1] определяет, следует ли отправлять элемент управления механизму рендеринга HTML. Если вы установите table.Visible = false, то таблица не будет проходить рендеринг ASP.NET, не будет проходить через IIS и не дойдет до конечного пользователя. n2009 требует, чтобы конечный пользователь получил таблицу для валидаторов. Style = "display: none" попадет в движок рендеринга браузера.