Как установить фон таблицы программно при запуске страницы asp.net? - PullRequest
3 голосов
/ 29 октября 2009

У меня есть страница 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";
}

Ответы [ 5 ]

4 голосов
/ 29 октября 2009

Место 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"
}
2 голосов
/ 30 октября 2009

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

<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";

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

2 голосов
/ 29 октября 2009

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

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

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

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

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

0 голосов
/ 29 октября 2009

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

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

<input type="radio" value="..." name="..." id="..."    onclick="document.getElementById('<% =tblSheet.ClientID%>').style.backgroundColor = '#99ccff';" />
0 голосов
/ 29 октября 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...