Coloque el borde alrededor de varias celdas en una vista de cuadrícula

Entonces, tengo una vista de cuadrícula cuya apariencia me gustaría modificar solo para ciertas celdas, y me gustaría tratar esas celdas como una sola (si es posible).

Entonces, primero estoy cambiando el color de fondo de algunas de las celdas en RowDataBound:

if (e.Row.RowIndex > 1 && e.Row.RowIndex < 7)
{
    e.Row.Cells[1].BackColor = Color.Red;
    e.Row.Cells[2].BackColor = Color.Red;
    e.Row.Cells[3].BackColor = Color.Red;
    e.Row.Cells[4].BackColor = Color.Red;
    e.Row.Cells[5].BackColor = Color.Red;
}   

Esto cambiará un área de celdas de 5x5 a rojo. Ahora, lo que me gustaría hacer a continuación es poner un borde alrededor del exterior de esa área de 5x5. Encontré borderStyle y BorderColor para una celda, pero ¿hay alguna manera de activar un borde solo para un lado de la celda para poder crear mi borde?

Muchas Gracias

preguntado el 12 de junio de 12 a las 20:06

Como dijo Walther, use CSS: este tipo de cosas es para lo que sirve CSS. ¡Los estilos en línea son malvados! :) Además, agregaría el borde alrededor de toda la fila. Si lo piensas bien, la fila debemos ser información relacionada, ¿verdad? Entonces, si resalta toda la fila, el usuario debemos entender que algo ha cambiado en la fila. Luego, puede usar el color de fondo para mostrar qué celdas cambiaron específicamente. -

Mis datos no son específicos de fila. Estoy creando un cronograma semanal con algunas "horas centrales" que deben cubrirse, que cruzan filas. -

OK veo. No estoy seguro de que pueda lograr el efecto que está buscando, pero ciertamente puede usar background-color. -

2 Respuestas

Le aconsejo que use clases en su lugar, no lo codifique de esta manera. Será más fácil de mantener, etc.

Respondido el 12 de junio de 12 a las 20:06

Entonces, solo necesito hacer una clase para cada esquina y los lados del borde y asignarla según sea necesario, ¡gracias! - Un inglés

Solo pensé en publicar esto como una solución, en caso de que alguien más esté buscando hacer esto.

Aquí está mi CSS

<style type="text/css">
.LeftUpperCorner
{
    border-left:5px solid black;
border-top:5px solid black;
}

.Top
 {
border-top:5px solid black;
 }

 .RightUpperCorner
 {
border-right:5px solid black;
border-top:5px solid black;
}

.Left
{
border-left:5px solid black;
}

.Right
{
border-right:5px solid black;
}

.LeftLowerCorner
{
border-left:5px solid black;
border-bottom:5px solid black;
}

.Bottom
{
border-bottom:5px solid black;
}

.RightLowerCorner
{
border-right:5px solid black;
border-bottom:5px solid black;
}

y mi código detrás:

            if (e.Row.RowIndex == 2)
        {
            e.Row.Cells[1].CssClass = "LeftUpperCorner";
            e.Row.Cells[2].CssClass = "Top";
            e.Row.Cells[3].CssClass = "Top";
            e.Row.Cells[4].CssClass = "Top";
            e.Row.Cells[5].CssClass = "RightUpperCorner";
        }

        if (e.Row.RowIndex == 3 || e.Row.RowIndex == 4 || e.Row.RowIndex == 5)
        {
            e.Row.Cells[1].CssClass = "Left";
            e.Row.Cells[5].CssClass = "Right";
        }

        if (e.Row.RowIndex == 6)
        {
            e.Row.Cells[1].CssClass = "LeftLowerCorner";
            e.Row.Cells[2].CssClass = "Bottom";
            e.Row.Cells[3].CssClass = "Bottom";
            e.Row.Cells[4].CssClass = "Bottom";
            e.Row.Cells[5].CssClass = "RightLowerCorner";
        }

Puede que no sea el más bonito, pero esto no tiene necesidad real de cambiar, y siempre estará en el mismo lugar, por lo que se ajusta a mis necesidades simples.

Respondido el 12 de junio de 12 a las 21:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.