private void Filtrar(IList lista) { if (lista == null || lista.Count == 0) { this.tlvPresupuestos.ModelFilter = null; this.tlvPresupuestos.CollapseAll(); } else { List<odts.PresupuestoVentaBloque> filtrados = new List<odts.PresupuestoVentaBloque>(); foreach (object o in lista) { if (o is Almacen.odts.ArticuloModelo) { filtrados.AddRange(GetBloquesQueContienen((o as Almacen.odts.ArticuloModelo).ArtiId1)); } else if (o is Almacen.odts.ArticuloDeterminacion) { filtrados.AddRange(GetBloquesQueContienen((o as Almacen.odts.ArticuloDeterminacion).ArtiId1)); } } BrightIdeasSoftware.IModelFilter filter = new BrightIdeasSoftware.ModelFilter(delegate(object x) { if (x is odts.PresupuestoVentaBloque) { if (filtrados.Contains((odts.PresupuestoVentaBloque)x)) { return true; } else return false; } else if (x is odts.PresupuestoVentaDetalle) { object padre = this.tlvPresupuestos.GetParent(x); if (padre is odts.DetalleModelo) { object abuelo = this.tlvPresupuestos.GetParent(padre); if (filtrados.Contains((odts.PresupuestoVentaBloque)abuelo)) return true; } else { if (filtrados.Contains((odts.PresupuestoVentaBloque)padre)) return true; } return false; } return false; }); this.tlvPresupuestos.ModelFilter = filter; } }
// Filtra las determinaciones utilizando el cuadro de texto de búsqueda private void txtDeterminacion_TextChanged(object sender, EventArgs e) { BrightIdeasSoftware.IModelFilter filter = new BrightIdeasSoftware.ModelFilter(delegate(object x) { string artiDescripcion = Utilidades.UtilsBD.RemoveDiacriticos(((Almacen.odts.ArticuloDeterminacion)x).Descripcion).ToUpper(); string texto = Utilidades.UtilsBD.RemoveDiacriticos(txtDeterminacion.Text).ToUpper(); return artiDescripcion.Contains(texto); }); this.folvDeterminaciones.ModelFilter = filter; }