Manejo de columnas en DataTable

18/07/2007 - 00:40 por Diego Fdo | Informe spam
Hola Grupo !!



Tengo un datatable, con 3 columnas (A,B,C), una forma con 3 botones lo
que pretendo es mostrar en una grilla las columnas en ordenes distintos a
como haya presionado el botón. Ejemplo:

Si presiono btn1 : se mostraria | B | C | A |

Si presiono btn2 : se mostraria | C | B | A |

Si presiono btn3 : se mostraria | A | B | C |



A modo de prueba solo cree la sintaxis para el botón1, pero veo que cuando
termina la ejecución del evento click, me muestra ABC, como si no hubiese
tenido en cuenta el orden estipulado. El código que uso es el siguiente:

DataTable dtOrder1;
public string thisConnectionString
ConfigurationManager.ConnectionStrings["Employees_ConnectionString"].ConnectionString;

protected void Page_Load(object sender, EventArgs e)
{


dtOrder1 = new DataTable();
SqlConnection sqlConex = new SqlConnection(thisConnectionString);
SqlDataAdapter daTables = new SqlDataAdapter("Select * from
Employee", sqlConex);
daTabla.Fill(dtOrder1);

grd01.DataSource = dtOrder1;
grd01.DataBind();
}



protected void btn1_Click(object sender, EventArgs e)
{


dtOrder1.Columns[0].SetOrdinal(2);
dtOrder1.Columns[1].SetOrdinal(0);
dtOrder1.Columns[2].SetOrdinal(1);
grd01.DataSource = dtOrder1;
grd01.DataBind();

}

Como podría ajustarlo ?.



Gracias



DiegoG.
 

Leer las respuestas

#1 Alberto Poblacion
18/07/2007 - 07:16 | Informe spam
¿Cómo tienes configurado en diseño el grd01? Si tienes asignadas columnas
fijas, siempre salen en el orden en que las hayas diseñado, con
independencia de cómo estén en la tabla que le asignes para hacer el
DataBinding.

Aparte de eso, veo otro problema en tu código: Cada vez que el usuario hace
click en el botón, haces DOS VECES el DataBind del grid. Recuerda que en web
forms, a diferencia de win forms, cada vez que haces el submit de la página
se ejecuta el Page_Load, seguido del Boton_Click correspondiente al botón
que originó el submit. Para evitarlo, tendrías que encerrar dentro de un "if
(!Page.IsPostBack)..." la parte del Page_Load que hace el DataBind.


"Diego Fdo" wrote in message
news:
Tengo un datatable, con 3 columnas (A,B,C), una forma con 3 botones lo
que pretendo es mostrar en una grilla las columnas en ordenes distintos a
como haya presionado el botón. Ejemplo:

Si presiono btn1 : se mostraria | B | C | A |

Si presiono btn2 : se mostraria | C | B | A |

Si presiono btn3 : se mostraria | A | B | C |



A modo de prueba solo cree la sintaxis para el botón1, pero veo que cuando
termina la ejecución del evento click, me muestra ABC, como si no hubiese
tenido en cuenta el orden estipulado. El código que uso es el siguiente:

DataTable dtOrder1;
public string thisConnectionString >
ConfigurationManager.ConnectionStrings["Employees_ConnectionString"].ConnectionString;

protected void Page_Load(object sender, EventArgs e)
{


dtOrder1 = new DataTable();
SqlConnection sqlConex = new SqlConnection(thisConnectionString);
SqlDataAdapter daTables = new SqlDataAdapter("Select * from
Employee", sqlConex);
daTabla.Fill(dtOrder1);

grd01.DataSource = dtOrder1;
grd01.DataBind();
}



protected void btn1_Click(object sender, EventArgs e)
{


dtOrder1.Columns[0].SetOrdinal(2);
dtOrder1.Columns[1].SetOrdinal(0);
dtOrder1.Columns[2].SetOrdinal(1);
grd01.DataSource = dtOrder1;
grd01.DataBind();

}

Como podría ajustarlo ?.

Preguntas similares