¿Cómo configuro un fondo de tabla mediante programación mientras ejecuto una página asp.net?

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

  •  22-07-2019
  •  | 
  •  

Pregunta

Tengo una página aspx que tiene un color de fondo predeterminado. Necesito poder cambiarlo mediante programación cuando se selecciona una determinada opción de un botón de opción. Intenté configurar el campo ID de la tabla, pero parece que no puedo acceder a él en mi código C # detrás del archivo.

Mi tabla original es:

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

Sin embargo, no veo la identificación en mi intellisense.

Editar:
Ahora que puedo ver mi tabla en mi código detrás, estoy tratando de cambiar el color de fondo. Aquí está el código para mi 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>

Estoy llegando al punto de interrupción que configuré en el controlador de eventos, pero el color de fondo no cambia en la devolución de datos. Si el elemento elegido es Pendiente, entonces quiero cambiar el color de fondo a algo diferente. Si cambian el botón de opción a Abierto o Cerrado, entonces quiero asegurarme de que el color de fondo sea el predeterminado.

Editar 2:
El código en mi controlador de eventos es muy simple:

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

Solución 3

¡Lo tengo funcionando!
Cambié la tabla a la siguiente (eliminé el color de fondo):

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

Luego, en mi código detrás, configuré el color de fondo en Page_Load cuando no es una devolución de datos:

tblSheet.Bgcolor = "#99ccff";

¡Voila! La lista de botones de radio y el controlador de eventos son los mismos que en la pregunta. La devolución de datos estaba volviendo a cambiar el color al original. ¡Gracias por la ayuda de todos!

Otros consejos

Coloque runat = " servidor " en la etiqueta de la tabla

Una vez que haya hecho eso, podrá acceder a la tabla mediante programación.

Para cambiar el color de fondo directamente, intente:

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

si está utilizando hojas de estilo que pueda, intente esto:

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

¿Está activando la devolución de datos que hará este cambio directamente desde el botón de opción?
¿Es esto lo único que cambia en este momento?

Si la respuesta a ambas preguntas es "sí", debería considerar hacer todo esto en JavaScript y omitir por completo la devolución de datos:

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

El razonamiento aquí es que las devoluciones son increíblemente lentas en comparación con mantener todo en el cliente, y también perjudican la capacidad de su aplicación web para escalar tan fácilmente (más trabajo en el servidor es, por supuesto, malo para la escalabilidad). Por lo tanto, es más rápido para el usuario y menos trabajo para su servidor.

Sin embargo, debe tener cuidado de no también perder la funcionalidad para los usuarios que tienen JavaScript deshabilitado al mover el trabajo fuera del servidor. Pero si esta devolución de datos ya fue activada por su botón de radio, entonces ya dependía de JavaScript para esta función.

En primer lugar, no puede ver la tabla porque no hay runat = " servidor " atributo de la tabla que le permite ver la identificación, en segundo lugar, no podrá cambiar el color de la tabla incluso si ve la tabla en su código. Incluso si va a acceder a los atributos de la tabla y establecer un color allí, tampoco lo ayudará porque tendrá que volver a publicar para ver el cambio.

Lo que debe hacer es usar el panel Actualizar y usar una variable en lugar de # FF9900, de esta manera el color predeterminado será Rojo o el color que sea y al marcar la casilla de verificación, cambiará el valor a Verde u otro color .

Como dijo Joel, JavaScript es una mejor solución si solo necesita cambiar los colores pero si transforma su tabla en un control de servidor (usando runat = server en su tabla u otro control de servidor) no olvide usar un bloque de código incrustado en getElementById para recuperar el ID de la tabla porque ASP.NET cambia el nombre de los ID cuando muestra la página.

En el ejemplo de Joel se verá así:

<input type="radio" value="..." name="..." id="..."    onclick="document.getElementById('<% =tblSheet.ClientID%>').style.backgroundColor = '#99ccff';" />
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top