DataGrid tamaño de los campos

08/07/2004 - 11:59 por Sara | Informe spam
Tengo un datagrid que esta asociado a un fichero y necesito que el
tamaño del registro siempre sea el mismo. Sabeis como puedo limitar el
tamaño de cada columna. Creo las columnas de esta forma:

DataColumn descol = new DataColumn("DESCRIPCIÓN");

y luego uso esta propiedad pero asi no funciona:

descol.MaxLength = 20;



También utilizo al grabarlo, la funcion PadRight pero tampoco funciona:

foreach (DataRowView dr in dtprv.DefaultView)

{

sw.WriteLine(

(dr["EMISOR"]).ToString().PadRight(6,' ')+

(dr["DESCRIPCIÓN"]).ToString().PadRight(20,' ')+

(dr["CADUCIDAD"]).ToString().PadRight(1,' ')+

(dr["TRATAMIENTO"]).ToString().PadRight(2,' '));

}

sw.Close();



Teneis alguna idea? Muchas gracias grupo

Preguntas similare

Leer las respuestas

#1 Octavio Hernandez
08/07/2004 - 14:42 | Informe spam
Sara,

El uso de PadRight() es correcto, eso debería rellenar con espacios por la
derecha hasta el ancho indicado. ¿Cuál es el problema, que EN LA REJILLA se
pueden meter más caracteres de los que indicas con MaxLength?

Slds - Octavio

"Sara" escribió en el mensaje
news:%
Tengo un datagrid que esta asociado a un fichero y necesito que el
tamaño del registro siempre sea el mismo. Sabeis como puedo limitar el
tamaño de cada columna. Creo las columnas de esta forma:

DataColumn descol = new DataColumn("DESCRIPCIÓN");

y luego uso esta propiedad pero asi no funciona:

descol.MaxLength = 20;



También utilizo al grabarlo, la funcion PadRight pero tampoco funciona:

foreach (DataRowView dr in dtprv.DefaultView)

{

sw.WriteLine(

(dr["EMISOR"]).ToString().PadRight(6,' ')+

(dr["DESCRIPCIÓN"]).ToString().PadRight(20,' ')+

(dr["CADUCIDAD"]).ToString().PadRight(1,' ')+

(dr["TRATAMIENTO"]).ToString().PadRight(2,' '));

}

sw.Close();



Teneis alguna idea? Muchas gracias grupo


Respuesta Responder a este mensaje
#2 Alejandro Pérez
08/07/2004 - 15:02 | Informe spam
A ver... si te entiendo, tienes un set de registros y
quieres truncarlos antes de pasarlos al datagrid...
Bueno, con la propiedad MaxLength del DataColumn no lo
puedes hacer porque esta no trunca el string si la
longitud es mayor a la especificada. Puedes hacer algo
parecido a lo que estabas haciendo, recorrer el
dtprv.DefaultView, pero obtener el substring del dr. Algo
similar a esto:

foreach(DataRow dr in dataSet11.Tables[0].Rows)
{
if(dr[1].ToString().Length>14)
dr[1]=dr[1].ToString().Substring(0,14);
}

Claro que es solo una opcion. Pueden existir otras mas
elegantes.

Se despide,
Alejandro Pérez
MCSD/MCDBA/MCT
Caracas - Venezuela

Tengo un datagrid que esta asociado a un fichero y


necesito que el
tamaño del registro siempre sea el mismo. Sabeis como


puedo limitar el
tamaño de cada columna. Creo las columnas de esta forma:

DataColumn descol = new DataColumn("DESCRIPCIÓN");

y luego uso esta propiedad pero asi no funciona:

descol.MaxLength = 20;



También utilizo al grabarlo, la funcion PadRight pero


tampoco funciona:

foreach (DataRowView dr in dtprv.DefaultView)

{

sw.WriteLine(

(dr["EMISOR"]).ToString().PadRight(6,' ')+

(dr["DESCRIPCIÓN"]).ToString().PadRight(20,' ')+

(dr["CADUCIDAD"]).ToString().PadRight(1,' ')+

(dr["TRATAMIENTO"]).ToString().PadRight(2,' '));

}

sw.Close();



Teneis alguna idea? Muchas gracias grupo


.

Respuesta Responder a este mensaje
#3 Sara
09/07/2004 - 09:12 | Informe spam
Si, la cosa es que tengo que grabarlo en un fichero. Entondes el usuario
puede meter todos los caracteres que quiera en cualquiera de sus campos y
eso es lo que tengo que limitar.
He pobrado (Alejandro) con el subString pero no se porque me da un error
como si saliese fuera de los indices de la matriz.No entiendo muy bien,
pongo el código:

string contrato = Contract.Text + ".prv";

System.IO.StreamWriter sw = new StreamWriter(lectura+ contrato, false);

foreach ( DataRowView dr in dtprv.DefaultView)

{

sw.WriteLine(

(dr["EMISOR"]).ToString().Substring(0,6)+

(dr["DESCRIPCIÓN"]).ToString().Substring(6,20)+

(dr["CADUCIDAD"]).ToString().Substring(26,1)+

(dr["TRATAMIENTO"]).ToString().Substring(27,2));

}

sw.Close();

La cosa es que es un registro de tamaño determinado que tengo que grabar a
un fichero. Esto me da una excepción y no entiendo porque asi no me lo graba
bien y si le pongo que el segundo campo empiece en 0 y coga 20 caracteres me
los coge bien,pero se supone que el indice para empezar, del segundo campo
es 6 no 0. Si hago lo mismo con el tercer campo ya me da otra vez excepcion
fuera de los indices de la matriz.

Bueno gracias chicos
Respuesta Responder a este mensaje
#4 Sara
09/07/2004 - 09:17 | Informe spam
Conseguido chicos, primero he tenido que usar padRight y ahora va bien,eso
si el indice de cada uno empieza en 0.
foreach ( DataRowView dr in dtprv.DefaultView)

{

sw.WriteLine(

(dr["EMISOR"]).ToString().PadRight(6,' ').Substring(0,6)+

(dr["DESCRIPCIÓN"]).ToString().PadRight(20,' ').Substring(0,20)+

(dr["CADUCIDAD"]).ToString().PadRight(1,' ').Substring(0,1)+

(dr["TRATAMIENTO"]).ToString().PadRight(2,' ').Substring(0,2));

}

sw.Close();



"Sara" escribió en el mensaje
news:%
Tengo un datagrid que esta asociado a un fichero y necesito que el
tamaño del registro siempre sea el mismo. Sabeis como puedo limitar el
tamaño de cada columna. Creo las columnas de esta forma:

DataColumn descol = new DataColumn("DESCRIPCIÓN");

y luego uso esta propiedad pero asi no funciona:

descol.MaxLength = 20;



También utilizo al grabarlo, la funcion PadRight pero tampoco funciona:

foreach (DataRowView dr in dtprv.DefaultView)

{

sw.WriteLine(

(dr["EMISOR"]).ToString().PadRight(6,' ')+

(dr["DESCRIPCIÓN"]).ToString().PadRight(20,' ')+

(dr["CADUCIDAD"]).ToString().PadRight(1,' ')+

(dr["TRATAMIENTO"]).ToString().PadRight(2,' '));

}

sw.Close();



Teneis alguna idea? Muchas gracias grupo


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida