Checkboxlist y jQuery II
Bueno en el post pasado, especifique como obtener todos los valores seleccionados. Ahora veamos como ver si un valor en especifico del listado esta seleccionado. cabe mencionar que es importante saber cuantos elementos hay en el listado, para ir a ese índice y validarlo.
var Complementarios = $('#<%=chkOptions.ClientID%> :checkbox')[0].checked ? 0 : 1;
lo que hago es validar el checkbox por su índice, y evalúo si esta seleccionado o no.
Y de pilón agrego como deseleccionar todos los elementos dentro de un checkboxlist. personalícenlo si necesitan hacer lo contrario.
$('#<%=chklist.ClientID%> input:checkbox:checked').each(function () {
$(this).attr('checked', false);
});
Iterar un Gridview con Linq
Para iterar el gridview debemos obtener la colección de registros de forma que sea IEnumerable
Eso es con el método Cast.
Adicionalmente se obtienen las columnas que se necesiten del grid
var rows = GridView1.Rows.Cast<GridViewRow>().Select(a => new
{
ID = Convert.ToInt32(a.Cells[0].Text),
FirstName = a.Cells[1].Text,
LastName = a.Cells[2].Text
}).ToList();
Finalmente se obtiene el listado de esa operación, y se manipula a consideración
Linq y el Metodo Distinct con IEqualityComparer
En este ejemplo no estoy usando tipos anónimos, ya que previamente definí mi clase a ocupar con Linq.
Lo primero es importar la libreria de Reflection.
using System.Reflection;
Lo siguiente es crear una clase que implemente la interface de IEqualityComparer, esta clase se usa sobre un listado del tipo de dato a utilizar
public class OCDiferentes : IEqualityComparer<OCxItem> { public bool Equals(OCxItem x, OCxItem y) { if (x == null || y == null) //optional return false; else return x.ID == y.ID; } public int GetHashCode(OCxItem Item) { return Item.ID.GetHashCode(); } }
Dentro de esta clase tenemos el método Equals donde se compararan los valores que queremos que sean únicos. Ahora la implementación.
ListadoResultante = (ListadoOrigen .Where(d => (d.Y- d.X) > 0) //Filtro .Select(d => new OCxItem { PId = (string)d.PId, Nombre = d.Nombre, ID = d.ID, Fecha = d.Fecha, }).Distinct(new OCDiferentes()) .OrderBy(d => d.ID)).ToList(); //Ordenamiento
Dentro del llamado al metodo Distinct creamos una clase para que compare, del tipo que habíamos definido previamente “OCDiferentes”
También incluyo un Where y un Order by para que se entienda como se utilizarían esas otras instrucciones.
Por ultimo tamvien estoy usando la instruccion ToList(), para que cree el listado del tipo que se define en el Select que es “OCxItem”
Nota: Listado ListadoResultante y ListadoOrigen son del tipo List<OCxItem>