private void Pegar() { // Si no hay seleccionada una tabla if (TablaParaCopy == null || TablaParaCopy.CurrentCell == null) { return; } // Parseamos los datos del portapapeles y definimos las variables. List <string[]> portapapeles = Utils.parseClipboard(); int columnagrid; int filagrid; bool esnuevo; // Si no hay datos, salimos. if (portapapeles == null) { return; } // Establecemos la columna donde se empieza a pegar. columnagrid = TablaParaCopy.Columns.IndexOf(TablaParaCopy.CurrentCell.Column); filagrid = TablaParaCopy.Items.IndexOf(TablaParaCopy.CurrentCell.Item); // Creamos un objeto ConvertidorHora y otro ConvertidorItinerario Convertidores.ConvertidorHora cnvHora = new Convertidores.ConvertidorHora(); Convertidores.ConvertidorItinerario cnvItinerario = new Convertidores.ConvertidorItinerario(); // Iteramos por las filas del portapapeles. foreach (string[] fila in portapapeles) { if (TablaSeleccionada == Tablas.Lineas) { // Creamos un objeto Linea o reutilizamos el existente. Linea linea; if (filagrid < ListaLineas.Count) { linea = ListaLineas[filagrid]; esnuevo = false; } else { linea = new Linea(); esnuevo = true; } int columna = columnagrid; foreach (string texto in fila) { if (columna >= TablaParaCopy.Columns.Count) { continue; } while (TablaParaCopy.Columns[columna].Visibility == Visibility.Collapsed) { columna++; } switch (columna) { case 0: linea.Nombre = texto; break; // NOMBRE case 1: linea.Descripcion = texto; break; //DESCRIPCIÓN } columna++; } if (esnuevo) { ListaLineas.Add(linea); } filagrid++; HayCambios = true; } if (TablaSeleccionada == Tablas.Itinerarios) { // Creamos un objeto Itinerario o reutilizamos el existente. Itinerario itinerario; if (filagrid < LineaSeleccionada.ListaItinerarios.Count) { itinerario = LineaSeleccionada.ListaItinerarios[filagrid]; esnuevo = false; } else { itinerario = new Itinerario(); esnuevo = true; } int columna = columnagrid; foreach (string texto in fila) { if (columna >= TablaParaCopy.Columns.Count) { continue; } while (TablaParaCopy.Columns[columna].Visibility == Visibility.Collapsed) { columna++; } int i; switch (columna) { case 0: itinerario.Nombre = (decimal)cnvItinerario.ConvertBack(texto, null, null, null); break; // NOMBRE case 1: itinerario.Descripcion = texto; break; //DESCRIPCIÓN case 2: itinerario.TiempoReal = int.TryParse(texto, out i) ? i : 0; break; //TIEMPO REAL case 3: itinerario.TiempoPago = int.TryParse(texto, out i) ? i : 0; break; //TIEMPO PAGO } columna++; } if (esnuevo) { LineaSeleccionada.ListaItinerarios.Add(itinerario); } filagrid++; HayCambios = true; } if (TablaSeleccionada == Tablas.Paradas) { // Creamos un objeto Parada o reutilizamos el existente. Parada parada; if (filagrid < ItinerarioSeleccionado.ListaParadas.Count) { parada = ItinerarioSeleccionado.ListaParadas[filagrid]; esnuevo = false; } else { parada = new Parada(); esnuevo = true; } int columna = columnagrid; foreach (string texto in fila) { if (columna >= TablaParaCopy.Columns.Count) { continue; } while (TablaParaCopy.Columns[columna].Visibility == Visibility.Collapsed) { columna++; } int i; switch (columna) { case 0: parada.Orden = int.TryParse(texto, out i) ? i : 0; break; // ORDEN case 1: parada.Descripcion = texto; break; //DESCRIPCIÓN case 2: parada.Tiempo = (TimeSpan)cnvHora.ConvertBack(texto, null, null, null); break; //TIEMPO } columna++; } if (esnuevo) { ItinerarioSeleccionado.ListaParadas.Add(parada); } filagrid++; HayCambios = true; } } }
private void PegarConductores(object parametro) { // Convertimos el parámetro pasado. DataGrid grid = parametro as DataGrid; if (grid == null || grid.CurrentCell == null) { return; } // Parseamos los datos del portapapeles y definimos las variables. List <string[]> portapapeles = Utils.parseClipboard(); int columnagrid; int filagrid; bool esnuevo; // Si no hay datos, salimos. if (portapapeles == null) { return; } // Establecemos la columna donde se empieza a pegar. columnagrid = grid.Columns.IndexOf(grid.CurrentCell.Column); filagrid = grid.Items.IndexOf(grid.CurrentCell.Item); // Creamos un objeto ConvertidorHora Convertidores.ConvertidorHora cnvHora = new Convertidores.ConvertidorHora(); // Iteramos por las filas del portapapeles. foreach (string[] fila in portapapeles) { // Creamos un objeto Conductor o reutilizamos el existente. Conductor conductor; if (filagrid < ListaConductores.Count) { conductor = ListaConductores[filagrid]; esnuevo = false; } else { conductor = new Conductor(); esnuevo = true; } int columna = columnagrid; foreach (string texto in fila) { while (grid.Columns[columna].Visibility == Visibility.Collapsed) { columna++; } int i; switch (columna) { case 0: // Numero. conductor.Id = int.TryParse(texto, out i) ? i : 0; break; case 1: // Nombre. conductor.Nombre = texto; break; case 2: // Apellidos. conductor.Apellidos = texto; break; case 3: // Telefono. conductor.Telefono = texto; break; case 4: // Email. conductor.Email = texto; break; case 5: // Fijo. conductor.Indefinido = false; if (int.TryParse(texto, out i)) { conductor.Indefinido = (i != 0); } else if (texto.ToLower() != "false") { conductor.Indefinido = true; } break; case 6: // Horas. conductor.Acumuladas = (TimeSpan)cnvHora.ConvertBack(texto, null, null, null); break; case 7: // Descansos. conductor.Descansos = int.TryParse(texto, out i) ? i : 0; break; case 8: // Descansos No Disfrutados. conductor.DescansosNoDisfrutados = int.TryParse(texto, out i) ? i : 0; break; } columna++; } if (esnuevo) { ListaConductores.Add(conductor); } filagrid++; HayCambios = true; } }