Subcadenas en un Grid

Hola buenas

Estoy cargando un webgrid en C# y tengo un campo del grid que es observaciones

@grid.GetHtml(.....

Quería saber si es posible indicar en el grid que coja los 50 primeros caracteres del campo de observaciones

Porque si es más grande no me llene la pantalla solo con lo que hay escrito ahí, el problema es que he probado con el substring y como hay observaciones más pequeñas de 50 me da error

Es decir que es posible tener observaciones muy largas y otras muy cortas, y lo que quiero es que si es muy larga me muestre solo los 50 primeros caracteres y sino que muestre toda la observación.

Gracias

1 Respuesta

Respuesta
1

Hay dos cosas.

Primero no se si lo llenas de una base de datos o como llenas el Grid.

Segundo, puedes antes de llenar el Grid con el DataTable preguntar por ese campo y asignar un valor menor o dejarlo como está.

Si lo quieres hacer en SQL, podrías hacer un CASE WHEN que pregunte el largo de la cadena.

Si la cadena es menor de 50, la dejas como está, si es mayor, haces el substring.

Esto lo puedes aplicar en SQL, Oracle, MySQL y hasta en Access si es el caso.

Si lo quieres hacer en el DataTable podrías hacer un recorrido con un For Each de la tabla y asignar un campo con la extracción de los 50 caracteres.

Algo así:

DataTable DT = ObtengoDatos();
DataTable DT1 = DT.Clone();
foreach (DataRow DR in DT.Rows())
{
    DR["Observaciones"] = DR["Observaciones"].ToString().Lengh > 50 ? DR["Observaciones"].ToString().SubString (0,50) : DR["Observaciones"].ToString()
    DT1.NewRow (DR);
}

¿Qué hago?

No se lo que hago... :D

Primero lleno un DataTable con nombre DT con los datos, imagino que tendrás una clase o rutina para eso.

Luego clono ese DT con un DT1 vacío.

Comienzo a recorrer el DT en el For each y cambio la Observación si es mayor que 50 caracteres.

Y luego le agrego el DR al DT1.

¿Por si no entiendes el uso del Operador? Te dejo el link de referencia.

http://msdn.microsoft.com/es-es/library/ty67wk28(v=vs.80).aspx

Muchas gracias, lo haré en la SQL porque lo hago con un gridview y se recorre solo

@grid.GetHtml(columns: grid.Columns(
grid.Column("Name", format: @@Html.ActionLink((string)item.Name,
"Details", "Product", new {id=item.ProductId}, null)),
grid.Column("ListPrice", header:"List Price",
format: @@item.ListPrice.ToString("0.00"))

Para que te hagas una idea, pero por la tarde lo he estado pensando y se me ocurrió también lo de la sql aunque no lo he hecho

Muchas gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas