Retroceder   Foros del Web > Programación para sitios web > .NET

Respuesta
 
Herramientas Desplegado
Antiguo 23-abr-2005, 10:41   #1 (permalink)
Scour está en el buen camino
 
Avatar de Scour
 
Fecha de Ingreso: octubre-2003
Ubicación: Murcia (España)
Mensajes: 91
Modificar tipo de dato en DataSet antes de cargarlo.

Muy buenas, estoy haciendo un programa Windows Form en c# y por temas de portabilidad, todas las transferencias de datos entre SqlServer y la aplicación van por SOAP.

El caso es que un apartado del programa es sobre control de tiempo trabajado, de modo que los usuarios finales tendrán una lista de tareas en un DataGrid, y al seleccionar con un doble click una tarea, un reloj empezará a sumar tiempo, que finalmente se guardará en la Base de Datos. Ese campo en BD es de tipo DateTime, y yo lo que necesito es que en el DataGrid solo se reflejen HH:MM:SS, no la fecha. Del SOAP me traigo el DataSet, y ya en la aplicación, selecciono únicamente la hora con este código:

Código:
private void grilla()
{
	llamada = new Service1();
	DateTime[] hora = new DateTime[llamada.contar(Decimal.Parse(ident.Text))];
	DataSet ds = new DataSet();
	ds = llamada.rellena_grilla(Decimal.Parse(ident.Text));
	DG.DataSource = ds;
	int i;
	for (i = 0; i <= llamada.contar(Decimal.Parse(ident.Text)); i++)
	{
		hora[i] = DateTime.Parse(ds.Tables["Tareas"].Rows[i][2].ToString());
		DG[i,2] = hora[i].ToLongTimeString();
	}
}
Pero este código no funciona por que el DataGrid (DG) hereda los tipos de datos del DataSet, y al hacer esta operación:

DG[i,2] = hora[i].ToLongTimeString();

estoy asignando un tipo string a un tipo DateTime.

Lo que necesito es que al traerme el DataSet, pueda acceder al esquema antes de cargar el DataGrid y donde dice algo así como:

<xs:element name="tiempo" type="DateTime" />

(No recuerdo si la línea era exactamente así, pero no tengo acceso a la BD ahora mismo con lo que no puedo ejecutar el SOAP para ver el esquema del DataSet)

Pues donde dice el tipo de dato DateTime, cambiarlo por string.

Pues todo este rollo para eso, ¿Como puedo cambiar en el esquema de un DataSet el tipo de dato antes de hacer nada con él?

Muchas gracias de ante mano.

Un saludo.
Scour está desconectado   Responder Citando
Antiguo 23-abr-2005, 19:17   #2 (permalink)
xknown está en el buen camino
 
Avatar de xknown
 
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.249
Puedes personalizar el Datagrid usando la clase DataGridTableStyle, añadir las columnas que quieres que se muestren y también definir el formato de estas columnas (utilizando la propiedad Format de éstas), por ejm para lo que mencionas te envío un pequeño ejemplo, muestra un DataGrid con una sóla columna y con el formato de la hora que especificas:

Código:
SqlDataAdapter da=new SqlDataAdapter("select OrderID, OrderDate from orders", "server=localhost;uid=sa;pwd=;database=northwind;");
DataSet ds=new DataSet();
da.Fill(ds, "Orders");
dg.DataSource=ds.Tables[0];

DataGridTableStyle pedidos = new DataGridTableStyle();
pedidos.MappingName = "Orders";

DataGridTextBoxColumn fecha= new DataGridTextBoxColumn();

fecha.MappingName = "OrderDate";
fecha.HeaderText = "Foo";
fecha.Format = "T"; // Muestra el formato HH:MM:SS

pedidos.GridColumnStyles.Add(date);
dg.TableStyles.Add(pedidos);
Para mayor información puedes ver la siguiente página

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
xknown está desconectado   Responder Citando
Antiguo 24-abr-2005, 17:46   #3 (permalink)
Scour está en el buen camino
 
Avatar de Scour
 
Fecha de Ingreso: octubre-2003
Ubicación: Murcia (España)
Mensajes: 91
Muchas gracias por tu respuesta, efectivamente he acabado usando eso, es más trabajoso que lo que yo estaba pretendiendo, pero por lo visto no se puede cambiar el tipo de dato de un dataset ya cargado.

Muchas gracias.

Un saludo.
Scour está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 00:53.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93