Como faço para definir um fundo da tabela programaticamente durante a execução de uma página asp.net?

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

  •  22-07-2019
  •  | 
  •  

Pergunta

Eu tenho uma página aspx que tem uma cor de fundo como padrão. Eu preciso ser capaz de mudá-lo de forma programática quando uma determinada opção de um botão de opção é selecionado. Eu tentei definindo o campo ID da tabela, mas eu não consigo acessá-lo no meu código C # por trás do arquivo.

Meu tabela original é:

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

Não vejo o id no meu intellisense, no entanto.

Editar:
Agora que eu posso ver minha mesa no meu trás código, eu estou tentando realmente mudar a cor de fundo. Aqui está o código para o meu RadioButtonList:

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

Eu estou batendo a I conjunto de ponto de interrupção no manipulador de eventos, mas a cor de fundo não está mudando na nova colocação. Se o item escolhido é Pendente, então eu quero mudar a cor de fundo para algo diferente. Se eles mudam o botão de opção para aberto ou fechado, então eu quero certificar-se a cor de fundo é o padrão.

Editar 2:
O código no meu manipulador de eventos é muito simples:

if (rdoStatus.SelectedValue == "181003")
{
  tblSheet.BgColor = "#ff9a9a";
}
else
{
  tblSheet.BgColor = "#99ccff";
}
Foi útil?

Solução 3

Eu tenho que trabalhar!
Eu mudei a mesa para o seguinte (eu removi o background-color):

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

Em seguida, no meu código por trás eu definir a cor de fundo no Page_Load quando é não uma nova postagem:

tblSheet.Bgcolor = "#99ccff";

Voila! O RadioButtonList e manipulador de eventos são os mesmos que na pergunta. A postagem foi mudando a parte de trás da cor do original. Obrigado pela ajuda de todos!

Outras dicas

Coloque runat="server" na tabela tag

Uma vez que você fez que você vai ser capaz de acessar a tabela de programação.

Para alterar a cor de fundo diretamente, tente:

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

Se você estiver usando folhas de estilo que você pode, tente o seguinte:

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

Você está provocando a postagem que vai fazer esta mudança directamente a partir do botão de rádio?
É esta a única coisa que muda neste momento?

Se a resposta a ambas as for "sim", você deve considerar fazer tudo isso em javascript em vez disso e pular o postback inteiramente:

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

O raciocínio aqui é que postbacks são incrivelmente lento em comparação com manter tudo no cliente, e eles também prejudicou a capacidade do seu aplicativo web em escala tão facilmente (mais trabalho no servidor, é claro, ruim para escalabilidade). Portanto, é mais rápido para o usuário e menos trabalho para o servidor.

No entanto, você precisa ter cuidado para também não lose funcionalidade para os usuários que têm quando se deslocam de trabalho desativado javascript fora do servidor. Mas se esta postagem já foi desencadeada pelo seu botão de rádio, em seguida, você já era dependente de Javascript para esta funcionalidade.

Primeiro de tudo você não pode ver a tabela porque não há nenhum atributo runat = "server" da tabela que lhe permite ver ID, em segundo lugar você não será capaz de mudar a cor da mesa, mesmo se você ver no quadro do seu código. Mesmo que você irá acessar os atributos da tabela e definir uma cor de lá não vai ajudar você quer porque você vai precisar para postar novamente para ver a mudança.

O que você precisa fazer é usar o painel de atualização e usar uma variável em vez de # FF9900, esta cor como padrão será Vermelha ou qualquer cor que é e em caso de verificação de caixa que você vai alterar o valor de verde ou outra cor .

Como Joel disse, JavaScript é uma solução melhor se você só precisa alterar cores, mas e se você transformar sua tabela em um controle de servidor (usando runat = server em sua mesa ou outro controle de servidor) não se esqueça de usar um bloco de código incorporado em getElementById para obter o ID de tabela porque id renomeação ASP.NET é quando ele processa a página.

O exemplo de Em Joel será parecido com:

<input type="radio" value="..." name="..." id="..."    onclick="document.getElementById('<% =tblSheet.ClientID%>').style.backgroundColor = '#99ccff';" />
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top