#region Variables del Grid
// Declared for the Master grid
DataGridView Master_DGV = new DataGridView();
// Declared for the Detail grid
DataGridView Detail_DGV = new DataGridView();
DGVP objdgv = new DGVP();
List<int> lstNumericTextBoxColumns;
public int ColumnIndex;
DataTable dtName = new DataTable();
#endregion
#region Eventos del formulario de avance
clsAvance ava;
public frmAvanceRuta()
{
InitializeComponent();
}
//va a buscar los detalles del pedido
private void btnBuscarZona_Click(object sender, EventArgs e)
{
ava = new clsAvance();
string fecha = dtpZona.Value.ToString("yyyyMMdd");
string zona = cmbZonas.SelectedValue.ToString();
Resultado resZona = ava.pedidosxZona(fecha,zona);
if (resZona.Datos.Rows.Count > 0)
{//llenaremos el primer datatable master
ProgressBar avan = new ProgressBar();
DataTable dtpedidosZona = new DataTable();
//agregaremos las columnas que nos traera el datable
dtpedidosZona.Columns.Add("Zonas del Dia");
dtpedidosZona.Columns.Add("Avance");
///construimos el segundo grid del detalle child
DataTable dtpedidosZonaDetalle = new DataTable();
dtpedidosZonaDetalle.Columns.Add("NoPedido");
dtpedidosZonaDetalle.Columns.Add("EstatusPedido");
dtpedidosZonaDetalle.Columns.Add("Zona");
dtpedidosZonaDetalle.Columns.Add("Almacen");
dtpedidosZonaDetalle.Columns.Add("FechaPedido", typeof(DateTime));
//dtpedidosZona.Columns.Add("Lineas");
dtpedidosZonaDetalle.Columns.Add("NoPaquetes");
// dtpedidosZona.Columns.Add("IdGuia");
dtpedidosZonaDetalle.Columns.Add("NoGuia");
dtpedidosZonaDetalle.Columns.Add("EstatusGuia");
dtpedidosZonaDetalle.Columns.Add("Avance");
//
int sumpaquetes = 0;
var sumpaquetesauditados=0;
var porcentaje = 0;
//
//llenamos este Grid
for (var i = 0; i <= resZona.Datos.Rows.Count-1; i++) {
var avance = "";
if (resZona.Datos.Rows[i].ItemArray[1].ToString() == "3") {
avance = "100%";
//avan.Value = 100;
}
else
{
Resultado calculoporcentaje = ava.pedidosxZonaDetalle(resZona.Datos.Rows[i].ItemArray[0].ToString());
if (calculoporcentaje.Datos.Rows.Count > 0)
{
for (var k = 0; k <= calculoporcentaje.Datos.Rows.Count - 1; k++)
{
sumpaquetes = sumpaquetes + Convert.ToInt32( calculoporcentaje.Datos.Rows[k].ItemArray[3]);
sumpaquetesauditados=sumpaquetesauditados + Convert.ToInt32(calculoporcentaje.Datos.Rows[k].ItemArray[4]);
}
porcentaje = ((sumpaquetesauditados * 100) / sumpaquetes);
if(resZona.Datos.Rows[i].ItemArray[1].ToString() == "2")
{
avance = Convert.ToString(porcentaje)+"%";
}
else if (resZona.Datos.Rows[i].ItemArray[1].ToString() == "2")
{
avance = Convert.ToString(porcentaje) + "%";
}
}
}
dtpedidosZona.Rows.Add(resZona.Datos.Rows[i].ItemArray[0], avance);
//llenamos el segundo grid manualmente
string cPedido = resZona.Datos.Rows[i].ItemArray[0].ToString();
Resultado res = ava.pedidosxZona(fecha, zona);
//Resultado resdetalle = ava.pedidosxZonaDetalle(cPedido);
if (res.Datos.Rows.Count>0) {
for(var j = 0; j <= res.Datos.Rows.Count - 1; j++)
{
dtpedidosZonaDetalle.Rows.Add(res.Datos.Rows[j].ItemArray[0], res.Datos.Rows[j].ItemArray[1],
res.Datos.Rows[j].ItemArray[2], res.Datos.Rows[j].ItemArray[3], res.Datos.Rows[j].ItemArray[4],
res.Datos.Rows[j].ItemArray[5], res.Datos.Rows[j].ItemArray[6], res.Datos.Rows[j].ItemArray[7]);
}
} else {
dtpedidosZonaDetalle.Rows.Add(res.Datos.Rows[i].ItemArray[0], "No hay Detalle", "No hay detalle", "No hay detalle", "No hay detalle");
}
}
DataSet dsDataSet = new DataSet();
dsDataSet.Tables.Add(dtpedidosZona);
dsDataSet.Tables.Add(dtpedidosZonaDetalle);
DataRelation relacion = new DataRelation("Detalle",dsDataSet.Tables[0].Columns[0],dsDataSet.Tables[1].Columns[0],true);
dsDataSet.Relations.Add(relacion);
dgvZonas.DataSource = dsDataSet.Tables[0];
}
else
{
}
}
//cuando cambia el valor del datetime picker elige todas las zonas de esa fecha
private void dtpZona_ValueChanged(object sender, EventArgs e)
{
grpZona.Enabled = true;
btnBuscarZona.Enabled = true;
ava = new clsAvance();
string fecha = dtpZona.Value.ToString("yyyyMMdd");
Resultado Res = ava.selectZona(fecha);
if (Res.Datos.Rows.Count > 0)
{
Res.Datos.Rows.Add("TODAS LAS ZONAS");
cmbZonas.DataSource = Res.Datos;
cmbZonas.ValueMember = "Zonas";
cmbZonas.DisplayMember = "Zonas";
}
else
{
cmbZonas.DataSource = null;
cmbZonas.Items.Clear();
}
}
private void dtpRuta_ValueChanged(object sender, EventArgs e)
{
ava = new clsAvance();
string fecha = dtpRuta.Value.ToString("yyyyMMdd");
Resultado Res = ava.selectRuta(fecha);
if (Res.Datos.Rows.Count > 0)
{
Res.Datos.Rows.Add(500,"TODAS LAS RUTAS","TODAS LAS RUTAS",2);
cmbRutas.DataSource = Res.Datos;
cmbRutas.ValueMember = "Id_Ruta";
cmbRutas.DisplayMember = "Nombre";
cmbRutas.SelectedValue = 500;
}
else
{
cmbRutas.DataSource = null;
cmbRutas.Items.Clear();
}
cmbRutas.Enabled = true;
btnBuscarRuta.Enabled = true;
grpRuta.Enabled = true;
}
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
TabPage current = (sender as TabControl).SelectedTab;
var nombre = current.Text;
if (nombre == "Zonas")
{
dtpRuta.Value = Convert.ToDateTime("1/1/2018");
cmbRutas.DataSource = null;
cmbRutas.Items.Clear();
cmbRutas.Enabled = false;
btnBuscarRuta.Enabled = false;
grpRuta.Enabled = false;
pnlGrid.Controls.Clear();
Master_DGV.DataSource = null;
Master_DGV.Rows.Clear();
Master_DGV.Refresh();
OrderMasterBindClass.objMasterDGVBind.Clear();
OrderDetailBindClass.objDetailDGVBind.Clear();
Detail_DGV.DataSource = null;
Detail_DGV.Refresh();
Detail_DGV.Rows.Clear();
cmbRutas.Enabled = false;
btnBuscarRuta.Enabled = false;
grpRuta.Enabled = false;
}
else if (nombre=="Rutas")
{
grpZona.Enabled = false;
cmbZonas.DataSource = null;
cmbZonas.Items.Clear();
dgvZonas.DataSource = null;
dgvZonas.Refresh();
}
}
private void btnBuscarRuta_Click(object sender, EventArgs e)
{
// To bind the Master data to List
Master_BindData();
// To bind the Detail data to List
Detail_BindData();
MasterGrid_Initialize();
// DetailGrid_Initialize();
}
#endregion
#region Metodos del Grid
private void Master_BindData()
{
if (OrderMasterBindClass.objMasterDGVBind.Count > 0)
{ OrderMasterBindClass.objMasterDGVBind.Clear(); }
ProgressBar prueba = new ProgressBar();
prueba.Value = 100;
ava = new clsAvance();
string fecha = dtpRuta.Value.ToString("yyyyMMdd");
Resultado ResRuta = ava.selectRuta(fecha);
if (ResRuta.Datos.Rows.Count > 0)
{
for (var i = 0; i <= ResRuta.Datos.Rows.Count - 1; i++)
{
var avance = 0;
var sub = 0;
var total = "";
var nPedido = 0;
///metodos para hacer el calculo del progressbar
var idguia = ResRuta.Datos.Rows[i].ItemArray[4].ToString();
Resultado ResPedidos = ava.pedidosxRuta(fecha, idguia);
nPedido = ResPedidos.Datos.Rows.Count;
for (var j = 0; j <= ResPedidos.Datos.Rows.Count - 1; j++)
{
var EstatusPedido = ResPedidos.Datos.Rows[j].ItemArray[2].ToString();
var Pedido= ResPedidos.Datos.Rows[j].ItemArray[1].ToString();
if (EstatusPedido=="3")
{
avance = 100;
}
else
{
Resultado calculoporcentaje = ava.pedidosxRutaDetalle(Pedido);
if (calculoporcentaje.Datos.Rows.Count > 0)
{
var sumpaquetes = 0;
var sumpaquetesauditados = 0;
var porcentaje = 0;
for (var k = 0; k <= calculoporcentaje.Datos.Rows.Count - 1; k++)
{
sumpaquetes = sumpaquetes + Convert.ToInt32(calculoporcentaje.Datos.Rows[k].ItemArray[3]);
sumpaquetesauditados = sumpaquetesauditados + Convert.ToInt32(calculoporcentaje.Datos.Rows[k].ItemArray[4]);
}
porcentaje = ((sumpaquetesauditados * 100) / sumpaquetes);
if (EstatusPedido == "2")
{
avance = porcentaje;
}
else if (EstatusPedido == "2")
{
avance =porcentaje;
}
}
}
sub += avance;
}
///
total = Convert.ToString(sub / nPedido);
//var pru=avan.Find(x=>x.idguia==idguia);
///
///metodo para llenar los campos del primer grid y master
OrderMasterBindClass obj = new OrderMasterBindClass("", ResRuta.Datos.Rows[i].ItemArray[1].ToString(),
ResRuta.Datos.Rows[i].ItemArray[2].ToString(),total ,dtpRuta.Value);
OrderMasterBindClass.objMasterDGVBind.Add(obj);
}
}
else
{
}
}
private void Detail_BindData()
{
ava = new clsAvance();
if (OrderDetailBindClass.objDetailDGVBind.Count > 0) { OrderDetailBindClass.objDetailDGVBind.Clear(); }
string fecha = dtpRuta.Value.ToString("yyyyMMdd");
Resultado Res = ava.selectRuta(fecha);
if (Res.Datos.Rows.Count > 0)
{
for (var j = 0; j <= Res.Datos.Rows.Count - 1; j++)
{
var idguia = Res.Datos.Rows[j].ItemArray[4].ToString();
Resultado ResRutaDetalle = ava.pedidosxRuta(fecha,idguia);
for (var i = 0; i <= ResRutaDetalle.Datos.Rows.Count - 1; i++)
{
var fec =Convert.ToDateTime( ResRutaDetalle.Datos.Rows[i].ItemArray[3]);
OrderDetailBindClass obj = new OrderDetailBindClass(ResRutaDetalle.Datos.Rows[i].ItemArray[0].ToString(),
ResRutaDetalle.Datos.Rows[i].ItemArray[1].ToString(), ResRutaDetalle.Datos.Rows[i].ItemArray[2].ToString(),
fec, ResRutaDetalle.Datos.Rows[i].ItemArray[4].ToString(),
ResRutaDetalle.Datos.Rows[i].ItemArray[5].ToString());
OrderDetailBindClass.objDetailDGVBind.Add(obj);
}
}
}
else
{
}
}
// to generate Master Datagridview with your coding
public void MasterGrid_Initialize()
{
if (Master_DGV.RowCount > 0 | Master_DGV.ColumnCount>0) {
Master_DGV.DataSource = null;
Master_DGV.Rows.Clear();
Master_DGV.Columns.Clear();
Master_DGV.Refresh();
}
//First generate the grid Layout Design
DGVP.Layouts(Master_DGV, Color.LightSteelBlue, Color.AliceBlue, Color.WhiteSmoke, false, Color.SteelBlue, false, false, false);
//Set Height,width and add panel to your selected control
DGVP.Generategrid(Master_DGV, pnlGrid, 1320, 470, 10, 10);
pnlGrid.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top;
// Color Image Column creation
DGVP.Templatecolumn(Master_DGV, ControlTypes.ImageColumn, "img", " ", " ", true, 26, DataGridViewTriState.True, DataGridViewContentAlignment.MiddleCenter, DataGridViewContentAlignment.MiddleRight, Color.Transparent, null, "", "", Color.Transparent);
// BoundColumn creation
DGVP.Templatecolumn(Master_DGV, ControlTypes.BoundColumn, "Nombre", "Ruta", "Ruta", true, 90, DataGridViewTriState.True, DataGridViewContentAlignment.MiddleLeft, DataGridViewContentAlignment.MiddleCenter, Color.Transparent, null, "", "", Color.Black);
// BoundColumn creation
DGVP.Templatecolumn(Master_DGV, ControlTypes.BoundColumn, "Descripcion", "Descripcion", "Descripcion", true, 270, DataGridViewTriState.True, DataGridViewContentAlignment.MiddleLeft, DataGridViewContentAlignment.MiddleCenter, Color.Transparent, null, "", "", Color.Black);
// BoundColumn creation
DGVP.Templatecolumn(Master_DGV, ControlTypes.ProgressBar, "Avance", "Avance", "Avance", true, 250, DataGridViewTriState.True, DataGridViewContentAlignment.MiddleLeft, DataGridViewContentAlignment.MiddleCenter, Color.Green, null, "", "", Color.Black);
// BoundColumn creation
DGVP.Templatecolumn(Master_DGV, ControlTypes.BoundColumn, "FechaGuia", "FechaGuia", "FechaGuia", true, 140, DataGridViewTriState.True, DataGridViewContentAlignment.MiddleCenter, DataGridViewContentAlignment.MiddleCenter, Color.Transparent, null, "", "", Color.Black);
//Convert the List to DataTable
DataTable detailTableList = ListtoDataTable(OrderDetailBindClass.objDetailDGVBind);
// Image Colum Click Event - In this method we create an event for cell click and we will display the Detail grid with result.
objdgv.DGVMasterGridClickEvents(Master_DGV, Detail_DGV, Master_DGV.Columns["img"].Index, EventTypes.cellContentClick, ControlTypes.ImageColumn, detailTableList, "Nombre");
// Bind data to DGV.//filtrado de lista para el cambio del combo box
if (cmbRutas.Text=="TODAS LAS RUTAS")
{
Master_DGV.DataSource = OrderMasterBindClass.objMasterDGVBind;
}
else
{
var valor = cmbRutas.Text;
OrderMasterBindClass.objMasterDGVBind = OrderMasterBindClass.objMasterDGVBind.Where(x => x.Nombre == valor).ToList();
Master_DGV.DataSource = OrderMasterBindClass.objMasterDGVBind;
}
///////////////////////////ahora inicializacion
if (Detail_DGV.ColumnCount > 0 | Detail_DGV.RowCount > 0)
{
Detail_DGV.DataSource = null;
Detail_DGV.Rows.Clear();
Detail_DGV.Columns.Clear();
Detail_DGV.Refresh();
}
//First generate the grid Layout Design
DGVP.Layouts(Detail_DGV, Color.Peru, Color.Wheat, Color.Tan, false, Color.Sienna, false, false, false);
//Set Height,width and add panel to your selected control
DGVP.Generategrid(Detail_DGV, pnlGrid, 300, 200, 10, 10);
// Color Dialog Column creation
DGVP.Templatecolumn(Detail_DGV, ControlTypes.BoundColumn, "Nombre", "Ruta", "Ruta", true, 90, DataGridViewTriState.True, DataGridViewContentAlignment.MiddleCenter, DataGridViewContentAlignment.MiddleRight, Color.Transparent, null, "", "", Color.Black);
// BoundColumn creation
DGVP.Templatecolumn(Detail_DGV, ControlTypes.BoundColumn, "NoPedido", "NoPedido", "NoPedido", true, 80, DataGridViewTriState.True, DataGridViewContentAlignment.MiddleLeft, DataGridViewContentAlignment.MiddleCenter, Color.Transparent, null, "", "", Color.Black);
// BoundColumn creation
DGVP.Templatecolumn(Detail_DGV, ControlTypes.BoundColumn, "EstatusPedido", "EstatusPedido", "EstatusPedido", true, 80, DataGridViewTriState.True, DataGridViewContentAlignment.MiddleLeft, DataGridViewContentAlignment.MiddleCenter, Color.Transparent, null, "", "", Color.Black);
// BoundColumn creation
DGVP.Templatecolumn(Detail_DGV, ControlTypes.BoundColumn, "FechaPedido", "FechaPedido", "FechaPedido", true, 200, DataGridViewTriState.True, DataGridViewContentAlignment.MiddleLeft, DataGridViewContentAlignment.MiddleCenter, Color.Transparent, null, "", "", Color.Black);
// BoundColumn creation
DGVP.Templatecolumn(Detail_DGV, ControlTypes.BoundColumn, "GuiaNumero", "GuiaNumero", "GuiaNumero", true, 100, DataGridViewTriState.True, DataGridViewContentAlignment.MiddleRight, DataGridViewContentAlignment.MiddleCenter, Color.Transparent, null, "", "", Color.Black);
// BoundColumn creation
DGVP.Templatecolumn(Detail_DGV, ControlTypes.BoundColumn, "GuiaEstatus", "GuiaEstatus", "GuiaEstatus", true, 120, DataGridViewTriState.True, DataGridViewContentAlignment.MiddleRight, DataGridViewContentAlignment.MiddleCenter, Color.Transparent, null, "", "", Color.Black);
// objdgv.DGVDetailGridClickEvents(Detail_DGV);
}
//List to Data Table Convert
private static DataTable ListtoDataTable<T>(IEnumerable<T> DetailList)
{
Type type = typeof(T);
var typeproperties = type.GetProperties();
DataTable listToDT = new DataTable();
foreach (PropertyInfo propInfo in typeproperties)
{
listToDT.Columns.Add(new DataColumn(propInfo.Name, propInfo.PropertyType));
}
foreach (T ListItem in DetailList)
{
object[] values = new object[typeproperties.Length];
for (int i = 0; i < typeproperties.Length; i++)
{
values[i] = typeproperties[i].GetValue(ListItem, null);
}
listToDT.Rows.Add(values);
}
return listToDT;
}
// to generate Detail Datagridview with your coding
/* public void DetailGrid_Initialize()
{
if (Detail_DGV.ColumnCount > 0|Detail_DGV.RowCount>0)
{
Detail_DGV.DataSource = null;
Detail_DGV.Rows.Clear();
Detail_DGV.Columns.Clear();
Detail_DGV.Refresh();
}
//First generate the grid Layout Design
DGVP.Layouts(Detail_DGV, Color.Peru, Color.Wheat, Color.Tan, false, Color.Sienna, false, false, false);
//Set Height,width and add panel to your selected control
DGVP.Generategrid(Detail_DGV, pnlGrid, 300, 200, 10, 10);
// Color Dialog Column creation
DGVP.Templatecolumn(Detail_DGV, ControlTypes.BoundColumn, "Nombre", "Ruta", "Ruta", true, 90, DataGridViewTriState.True, DataGridViewContentAlignment.MiddleCenter, DataGridViewContentAlignment.MiddleRight, Color.Transparent, null, "", "", Color.Black);
// BoundColumn creation
DGVP.Templatecolumn(Detail_DGV, ControlTypes.BoundColumn, "NoPedido", "NoPedido", "NoPedido", true, 80, DataGridViewTriState.True, DataGridViewContentAlignment.MiddleLeft, DataGridViewContentAlignment.MiddleCenter, Color.Transparent, null, "", "", Color.Black);
// BoundColumn creation
DGVP.Templatecolumn(Detail_DGV, ControlTypes.BoundColumn, "EstatusPedido", "EstatusPedido", "EstatusPedido", true, 80, DataGridViewTriState.True, DataGridViewContentAlignment.MiddleLeft, DataGridViewContentAlignment.MiddleCenter, Color.Transparent, null, "", "", Color.Black);
// BoundColumn creation
DGVP.Templatecolumn(Detail_DGV, ControlTypes.BoundColumn, "FechaPedido", "FechaPedido", "FechaPedido", true, 200, DataGridViewTriState.True, DataGridViewContentAlignment.MiddleLeft, DataGridViewContentAlignment.MiddleCenter, Color.Transparent, null, "", "", Color.Black);
// BoundColumn creation
DGVP.Templatecolumn(Detail_DGV, ControlTypes.BoundColumn, "GuiaNumero", "GuiaNumero", "GuiaNumero", true, 100, DataGridViewTriState.True, DataGridViewContentAlignment.MiddleRight, DataGridViewContentAlignment.MiddleCenter, Color.Transparent, null, "", "", Color.Black);
// BoundColumn creation
DGVP.Templatecolumn(Detail_DGV,ControlTypes.BoundColumn, "GuiaEstatus", "GuiaEstatus", "GuiaEstatus", true, 120, DataGridViewTriState.True, DataGridViewContentAlignment.MiddleRight, DataGridViewContentAlignment.MiddleCenter, Color.Transparent, null, "", "", Color.Black);
// objdgv.DGVDetailGridClickEvents(Detail_DGV);
}*/
#endregion
}
}