Ordenar columnas de un GridView en ASP.NET C#

publicado por: Anonymous

Quiero ordenar las columnas de un GridView en ASP.NET, estoy consumiendo un servicio externo que me arroja ya los resultados y ese resultado yo lo he puesto en una grilla, es decir en un GridView pero lo que quiero es ordenar por columnas.

Este es mi codigo :

ServiceReference1.SvcCreditoExternoClient tabla = new ServiceReference1.SvcCreditoExternoClient();
ServiceReference1.DtoGeneradorTablaAmortizacionRequest dtorequest = new ServiceReference1.DtoGeneradorTablaAmortizacionRequest();
ServiceReference1.DtoDividendo dtodividendo = new ServiceReference1.DtoDividendo();
List<ServiceReference1.DtoDividendo> listadtodividendo;

dtorequest.AjustarTabla = ServiceReference1.EnumeradosConfiguracionNegocioMetodosAjusteTabla.SinAjuste;
dtorequest.AplicaAlgoritmoRedondeoCuota = true;
dtorequest.AplicaDiaLaborable = true;
dtorequest.AplicaDiaLaborableFinSemanaAdelante = true;
dtorequest.AplicaFechasIguales = true;
dtorequest.AplicaFindeMes = true;
dtorequest.AplicaPrimerVencimiento = true;
dtorequest.BaseCalculo = 360;
dtorequest.CodigoSectorOrganismoControl = 0;
dtorequest.Decimales = 2;
dtorequest.DecimalesCuota = 2;
dtorequest.DecimalesTasa = 2;
dtorequest.EsExento = false;
dtorequest.FactorDeRedondeo = ServiceReference1.EnumeradosConfiguracionNegocioFactorRedondeo.SnDecimales;
dtorequest.Fecha1erVencimiento = Convert.ToDateTime(txtFechaDesembolso.Text);//Convert.ToDateTime("2016-07-06");
dtorequest.FechaInicioTabla = Convert.ToDateTime("2016-05-29");
//FormaPago = 12,
dtorequest.GeneraTasaObjetivo = false;
dtorequest.Gradiente = 0;
dtorequest.Idproducto = 1;
dtorequest.Institucion = 1;

Decimal FactorMaximo;
FactorMaximo = Convert.ToDecimal(150000);
Decimal TasaMensual;
TasaMensual = Convert.ToDecimal(0.08);
Decimal TasaDiaria;
TasaDiaria = Convert.ToDecimal((TasaMensual / 30) / 100);
Session["2"] = TasaDiaria;
Decimal Plazo;
Plazo = Convert.ToInt32(dprNumerocuota.SelectedItem.Text.Substring(0, 2)) * 30;
Decimal factor1, factor2;
factor1 = (Convert.ToDecimal(txtImporteCredito.Text) * Convert.ToInt32(Plazo) * Convert.ToDecimal(TasaDiaria)) + Convert.ToDecimal(txtImporteCredito.Text);
Session["3"] = factor1;
factor2 = Convert.ToDecimal(factor1) * Convert.ToInt32(Plazo) * Convert.ToDecimal(TasaDiaria);
Session["4"] = factor2;
Decimal SeguroDesgravamen;
SeguroDesgravamen = (Convert.ToDecimal(factor1) > Convert.ToDecimal(FactorMaximo) ? Convert.ToDecimal(FactorMaximo) : Convert.ToDecimal(factor2));
Session["5"] = SeguroDesgravamen;
Decimal MontoFinanciado;
MontoFinanciado = Math.Round(Convert.ToDecimal(txtImporteCredito.Text) + Convert.ToDecimal(SeguroDesgravamen), 2);
Session["6"] = MontoFinanciado;
Label1.Text = Convert.ToString(MontoFinanciado);

//ListaRubroDiferido = Rubrio.Add(pag),
dtorequest.Monto = MontoFinanciado;//Convert.ToDecimal(txtImporteCredito.Text);//Convert.ToDecimal(1900.00);
dtorequest.MontoCapitalFijo = 0;
dtorequest.MontoTIR2 = 10000;
dtorequest.MontoTIR3 = 0;
int somestring = Convert.ToInt32(dprNumerocuota.SelectedItem.Value);
dtorequest.NumeroCuotas = Convert.ToInt32(dprNumerocuota.SelectedItem.Text.Substring(0, 2));// 12;
dtorequest.Oficina = 5;
dtorequest.Periodicidad = 30;
dtorequest.PeriodicidadCapital = 0;
dtorequest.PeriodicidadInteres = 0;
dtorequest.PeriodosGracia = 0;
dtorequest.Plazo = Convert.ToInt32(dprNumerocuota.SelectedItem.Text.Substring(0, 2)) * 30;

Session["7"] = dtorequest.Plazo;
Session["8"] = Convert.ToInt32(dprNumerocuota.SelectedItem.Text.Substring(0, 2));

dtorequest.PorcentajeMinimoCuoton = 0;
dtorequest.RedondeoHacia = ServiceReference1.EnumeradosConfiguracionNegocioTipoRedondeo.Arriba;   
dtorequest.Tasa = Convert.ToDecimal(txtTEA.Text);//40;
dtorequest.TasaInicialObjetivo = 0;
dtorequest.TipoGracia = ServiceReference1.EnumeradosConfiguracionNegocioTipoGracia.GraciaCapital;
dtorequest.TipoTabla = "CUOTFIJA";

listadtodividendo = tabla.ConsultarTablaAmortizacion(dtorequest).ToList();

GridView1.DataSource = listadtodividendo;

GridView1.DataBind();

Al principio cuando ejecuté me salían varias filas que no deseaba, entonces las oculté.

Realmente, solo necesito la ordenación.

Yo quiera ordenarlas así:

introducir la descripción de la imagen aquí

Pero a me sale así:

introducir la descripción de la imagen aquí

solución

El resultado que llena el GridView lo estás obteniendo en una lista, entonces, ahí es donde se puede aplica qué columnas van primero, y cuales después. Usando Linq, puedes tomar la lista original y a partir de ahí crear una nueva que servirá como la fuente de datos del GridView:

//Aquí va todo el código que actualmente tienes
listadtodividendo = tabla.ConsultarTablaAmortizacion(dtorequest).ToList();

var nuevolistadtodividendo = (from o in listadtodividendo
                select new {
                    Capital = o.Capital
                    Cuota = o.Cuota
                }).Tolist();

GridView1.DataSource = nuevolistadtodividendo;
//Aquí va todo el código que actualmente tienes

Lo único que tienes que hacer, es poner en la sección del select las columnas que desees y en automático se ordenarán.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *