Как программно установить фон таблицы при запуске страницы asp.net?

StackOverflow https://stackoverflow.com/questions/1646007

  •  22-07-2019
  •  | 
  •  

Вопрос

У меня есть страница aspx, которая по умолчанию имеет один цвет фона.Мне нужно иметь возможность изменять его программно, когда выбран определенный параметр переключателя.Я попытался установить поле идентификатора таблицы, но не могу получить к нему доступ в своем коде C# в файле.

Моя исходная таблица:

<table id="tblSheet" runat="server" style="border-color: #FF9900; border-style: solid; 
border-width:  thin; width:100%; background-color: #99ccff;" cellspacing="4" 
cellpadding="1">

Однако я не вижу идентификатора в своем intellisense.

Редактировать:
Теперь, когда я вижу свою таблицу в коде, я пытаюсь изменить цвет фона.Вот код моего списка радиокнопок:

<asp:RadioButtonList ID="rdoStatus" runat="server" AutoPostBack="true"
RepeatDirection="Horizontal" Visible="true"   
OnSelectedIndexChanged="rdoStatus_OnSelectionChanged">
<asp:ListItem Value="181001" Text="Open"/>
<asp:ListItem Value="181002" Text="Closed" />
<asp:ListItem Value="181003" Text="Pending" />
</asp:RadioButtonList>

Я достигаю точки останова, установленной в обработчике событий, но цвет фона не меняется при обратной передаче.Если выбранный элемент находится в состоянии «Ожидание», я хочу изменить цвет фона на другой.Если они изменят переключатель на «Открыть» или «Закрыть», я хочу, чтобы цвет фона был выбран по умолчанию.

Редактировать 2:
Код моего обработчика событий очень прост:

if (rdoStatus.SelectedValue == "181003")
{
  tblSheet.BgColor = "#ff9a9a";
}
else
{
  tblSheet.BgColor = "#99ccff";
}
Это было полезно?

Решение 3

У меня это работает!
Я изменил таблицу на следующую (я удалил цвет фона):

<table id="tblSheet" runat="server" style="border-color: #FF9900; border-style: solid; 
border-width: thin; width:100%;" cellspacing="4" cellpadding="1">

Затем в моем коде я устанавливаю цвет фона в Page_Load, когда он нет постбек:

tblSheet.Bgcolor = "#99ccff";

Вуаля!Список радиокнопок и обработчик событий такие же, как в вопросе.Постбэк менял цвет обратно на исходный.Спасибо всем за помощь!

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

Место runat="server" в теге таблицы

Как только вы это сделаете, вы сможете получить доступ к таблице программно.

Чтобы напрямую изменить цвет фона, попробуйте:

if (rdoStatus.SelectedValue == "181003")
    {
      tblSheet.Style.Add("background-color", "#ff9a9a");
    }
    else
    {
      tblSheet.Style.Add("background-color", "#99ccff");
    }

если вы используете таблицы стилей, попробуйте следующее:

if (rdoStatus.SelectedValue == "181003")
{
  tblSheet.CssClass = "default_color"
}
else
{
  tblSheet.CssClass = "other color"
}

Вы запускаете обратную передачу, которая внесет это изменение непосредственно с помощью переключателя?
Это единственное, что меняется в настоящее время?

Если ответ на оба вопроса «да», вам следует рассмотреть возможность выполнения всего этого в javascript и полностью пропустить обратную передачу:

<input type="radio" value="..." name="..." id="..."
    onclick="document.getElementById('tblSheet').style.backgroundColor = '#99ccff';" />

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

Однако вам нужно быть осторожным, чтобы не терять функциональность для пользователей, у которых отключен JavaScript при перемещении работы с сервера.Но если эта обратная передача уже была активирована вашим переключателем, значит, эта функция уже зависела от JavaScript.

Прежде всего, вы не можете видеть таблицу, потому что у таблицы нет атрибута runat="server", который позволяет вам видеть идентификатор. Во-вторых, вы не сможете изменить цвет таблицы, даже если вы видите таблицу в ваш код.Даже если вы получите доступ к атрибутам таблицы и установите там цвет, это вам тоже не поможет, потому что вам нужно будет отправить ответ еще раз, чтобы увидеть изменения.

Что вам нужно сделать, это использовать панель «Обновление» и использовать переменную вместо #FF9900, таким образом, цвет по умолчанию будет красным или любым другим цветом, а при проверке флажка вы измените значение на зеленый или другой цвет.

Как сказал Джоэл, JavaScript — лучшее решение, если вам нужно изменить только цвета, но если вы преобразуете свою таблицу в серверный элемент управления (используя runat=server в своей таблице или другой серверный элемент управления), не забудьте использовать встроенный блок кода. в getElementById, чтобы получить идентификатор таблицы, поскольку ASP.NET переименовывает идентификаторы при визуализации страницы.

В примере Джоэла это будет выглядеть так:

<input type="radio" value="..." name="..." id="..."    onclick="document.getElementById('<% =tblSheet.ClientID%>').style.backgroundColor = '#99ccff';" />
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top