Foros del Web » Programación para mayores de 30 ;) » .NET »

DataTable y DataGrid

Estas en el tema de DataTable y DataGrid en el foro de .NET en Foros del Web. Hola Foro. Trabajo con webforms en c sharp y me surgio la sigu¡ente duda, ya que por cuestiones de presentancion tengo que modificar mi grid. ...
  #1 (permalink)  
Antiguo 09/03/2005, 17:40
Avatar de grisel  
Fecha de Ingreso: diciembre-2004
Ubicación: Mexico
Mensajes: 215
Antigüedad: 20 años, 2 meses
Puntos: 0
DataTable y DataGrid

Hola Foro.

Trabajo con webforms en c sharp y me surgio la sigu¡ente duda, ya que por cuestiones de presentancion tengo que modificar mi grid.

Tengo una tabla "tbDatos" la cual trae datos de mi BD, cuando la enlazo al grid, me muestra las columnas asi:

concepto Monto Etapa
xxxxxx 100.00 1
yyyyy 200.00 1
xxxxxx 300.00 2
yyyyy 100.00 2
xxxxxx 50.00 3
yyyyy 00.00 3

Quisiera saber si puedo manipular esta tabla antes de mandarla al grid, o si en el evento ItemData del grid puedo manipular para que me salga una tabla asi:

concepto Etapa1 Etapa2 Etapa3
xxxxxxxxx 100.00 300.00 50.00
yyyyyyyy 200.00 100.00 00.00

Es muy complejo hacer esto?


Y si de ser posible podria añardir una columna para calcular el monto total por concepto?

bueno si me pudieran ayudar se los agradeceria mucho. co algun link, comentario , sugerencia, etc.

Saludos y buen dia.
__________________
grissss :Zzz:
  #2 (permalink)  
Antiguo 09/03/2005, 21:04
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 20 años, 2 meses
Puntos: 7
Me parece que sería mejor si manipulas esos datos y lo pones en otro DataTable y luego recién lo asignas éste último como DataSource del DataGrid.

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #3 (permalink)  
Antiguo 10/03/2005, 14:17
Avatar de grisel  
Fecha de Ingreso: diciembre-2004
Ubicación: Mexico
Mensajes: 215
Antigüedad: 20 años, 2 meses
Puntos: 0
Hola Xknown.

Me parecio buena la idea de crear una nueva tabla con el formato que quiero apartir de la que ya tengo.
Pero solo que no estoy muy familiarizada con el uso del DataTable, DataView y DataSet.
ok pues estuve checando en la ayuda msdn y entontre bastante informacion solo que ya me hice bolas con estos conceptos.

bueno pues para empezar cree una nueva tabla con el formato que quiero, la enlaze a un grid y funciono , obviamente sin nada de datos.

DataTable tablaNueva = new DataTable ();
tDatos.Columns .Add ("conceptos",typeof(string));
for (int k=1; k<=oProy.numEtapas; k++)
{
tDatos.Columns.Add ("Etapa"+k,typeof(int));
}

donde oProy.numEtapas, ya trae el numero de etapas.

bueno ahora solo falta de la tablaAnterior sacar los datos y pasarlos a esta. es decir casi nada verdad?

ok intente hacerlo con este codigo pero creo que no tiene nada que ver.

DataRow row = tDatos.NewRow ();
string concepto;
DataView dv = new DataView (tbGrid);
for (int h =1; h<tbGrid.Rows .Count ; h++)
{
concepto = "";
dv.Sort = "concepto";
DataRowView[] foundRows = dv.FindRows (new object[] {"concepto"});
foreach(DataRowView rowGrid in foundRows)
{
if (concepto != rowGrid["concepto"].ToString ())
{
row = tDatos.NewRow ();
row[h]= concepto;
tDatos.Rows .Add (row);
}
else
{
concepto = rowGrid["concepto"].ToString ();
}
}
}

Utilizo el DataView porq por lo que lei es mas flexible q un DataTable, bueno mi problema es mas bien q no se como sacar el valor de la celda q me interesa para comparar y asi ir pasando los datos a la nueva tabla , por lo que veo me tengo que traer todo el renglon y yo quiero ir colocando los datos columna por columna , bueno no se si me la esyoy complicando mucho, pero si me pudieran orientar un poquillo se los agradeceria.

saludos y bye
__________________
grissss :Zzz:
  #4 (permalink)  
Antiguo 10/03/2005, 18:55
Avatar de grisel  
Fecha de Ingreso: diciembre-2004
Ubicación: Mexico
Mensajes: 215
Antigüedad: 20 años, 2 meses
Puntos: 0
Ok chicos cre que me la estaba complicando mucho pero ahi la llevo, solo que si esta medio complejo ya que se me van a repetir los concpetos.
Esto es lo que hecho.

DataRow row = tDatos.NewRow ();
System.Data.DataRow Renglon;
int etapa;
Renglon = tbGrid.Rows[1];
etapa = (int)Renglon["numetapa"];
for (int h =0; h<tbGrid.Rows .Count ; h++)
{
try
{
Renglon = tbGrid.Rows[h];
etapa = (int)Renglon["numetapa"];
if((int)Renglon["numetapa"]== etapa)
{
row = tDatos.NewRow ();
row[0]= Renglon["concepto"];
for (int q =1; q<=oProy.numEtapas; q++)
{ row[q]= Renglon["monto"];
}
tDatos.Rows .Add (row);
etapa = (int)Renglon["numetapa"];
}
}
catch (Exception ex)
{
MsgBox1.ShowMessage ("Error"+ex.Message,"OK",false);
break;
}
}

DataGrid1.DataSource = tDatos;
DataGrid1.DataBind ();

El problema es acomodar ahora las cantidades a su respectiva columna.

bueno seguire intentando
saludos y bye
__________________
grissss :Zzz:
  #5 (permalink)  
Antiguo 10/03/2005, 23:07
Avatar de Thumper  
Fecha de Ingreso: agosto-2004
Ubicación: Jesús María - Lima - Perú
Mensajes: 270
Antigüedad: 20 años, 6 meses
Puntos: 6
Thumper

mira lo k yo hago para poder ver el datagrid con cierta configuracion es darle formato, es simple:

1.- jalas el datagrid
2.- buscas en sus propiedades: TableStyles, se te abre otra ventana
3.- click en agregar, al dalo izquierdo te sale el q acabas de agregar y al lado derecho salen sus propiedades
4.- en una de sus propiedades dice MappingName, ahi debes colocar el nombre de la tabla q guardaste en tu dataset, luego buscas GridColumnStyle, te vuelve a salir una ventana igual a la anterior, entonces das click en el boton agregar como campos quieres mostrar en el grid.
5.- das click en alguna opcion q hayas agregado y veras q al lado derecho salen sus propiedades:

HeaderText-->texto cabecera
Width --> ahi ves el tamaño, para q no te salga muy junto
MappingName--> mucho ojo aki pones el nombre del campo q kieres q muestre tienes q ser el mismo (importa mayusculas y minusculas)

Yo llenaria asi tu datagrid:

Public cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data source=" Application.StartupPath & "\BDVentas.mdb;")
Dim ds As New DataSet
Dim cmd As New OleDbCommand("SELECT codigo, etapa1, etapa2,etapa3, (etapa1+ etapa2+etapa3) as Total FROM tb_proyecto", cn)
Dim da As New OleDbDataAdapter(cmd)
ds.Clear()
da.Fill(ds, "cliente")
Me.DataGrid1.DataSource = ds.Tables(0)

en el paso 4 deberias colocar en MappingName-->cliente
en el paso 5 para cada opcion en el MappingName-->codigo,etapa1,etapa2,etapa3,total.

espero q te sirva de ayuda
__________________
Martín Alexis Valdivia S.
-----------------------------
"Quisiéramos cambiar el mundo, pero Dios no nos daría el código fuente." CAP
"Si Saber No Es Un Derecho, Seguro Será Un Izquierdo." WD
  #6 (permalink)  
Antiguo 11/03/2005, 09:47
Avatar de grisel  
Fecha de Ingreso: diciembre-2004
Ubicación: Mexico
Mensajes: 215
Antigüedad: 20 años, 2 meses
Puntos: 0
Hola Thumper.

Pues veras me parece buena tu idea pero estuve buscando en las propiedades del DataGrid la opcion de TableStyles y no la veo, no se si no entendi bien, aunque eres muy claro en tu explicacion.

Te recuerdo que trabajo en webforms en c #, no se si sea por ahi que no encuentre esta propiedad del grid.

Buen dia
y
bye
__________________
grissss :Zzz:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:31.