public static void RepeaterBind <T>(System.Web.UI.WebControls.Repeater repeater, IList <T> dataSource, int paginaAtual, int qtdRegistrosPagina, int totalRegistros, int[] opcoesRegistroPagina, PopularDropDownListOrdernacao popularDropDownListOrdernacao, RepeaterItemEventHandler onItemDataBound) { int nroPaginas = (int)Math.Ceiling((decimal)totalRegistros / qtdRegistrosPagina); if (nroPaginas <= paginaAtual) { paginaAtual = nroPaginas - 1; } if (paginaAtual < 0) { paginaAtual = 0; } if (opcoesRegistroPagina == null) { opcoesRegistroPagina = new int[] { 20, 40, 60, 80, 100, 160, 200 } } ; DadosDatabound = new CarregaDadosDatabound() { PaginaAtual = paginaAtual, TotalPaginas = nroPaginas, QtdRegistrosPagina = qtdRegistrosPagina, TotalRegistros = totalRegistros, OpcoesRegistroPagina = opcoesRegistroPagina, PopularDropDownListOrdernacao = popularDropDownListOrdernacao, OnItemDataBound = onItemDataBound }; repeater.ItemDataBound += new RepeaterItemEventHandler(repeater_ItemDataBound); repeater.DataSource = dataSource; repeater.DataBind(); DadosDatabound = null; }
private static void repeater_ItemDataBound(object sender, RepeaterItemEventArgs e) { CarregaDadosDatabound dadosDatabound = DadosDatabound; if (dadosDatabound != null) { if (e.Item.ItemType == ListItemType.Header || e.Item.ItemType == ListItemType.Footer) { IBarraPaginacao barraPaginacao = FindControlByTypeIBarraPaginacao(e.Item.Controls); if (barraPaginacao != null) { barraPaginacao.PaginaAtual = dadosDatabound.PaginaAtual; barraPaginacao.QtdPaginas = dadosDatabound.TotalPaginas; barraPaginacao.QtdRegistroPagina = dadosDatabound.QtdRegistrosPagina; barraPaginacao.DDLQtdRegistrosPagina.DataSource = dadosDatabound.OpcoesRegistroPagina; barraPaginacao.DDLQtdRegistrosPagina.DataBind(); barraPaginacao.DDLQtdRegistrosPagina.SelectedValue = dadosDatabound.QtdRegistrosPagina.ToString(); if (dadosDatabound.TotalPaginas > 0) { barraPaginacao.RPTPaginas.DataSource = new int[dadosDatabound.TotalPaginas]; barraPaginacao.RPTPaginas.DataBind(); } else { barraPaginacao.RPTPaginas.Visible = false; } if (dadosDatabound.PopularDropDownListOrdernacao != null) { barraPaginacao.DDLOrdenacaoVisible = dadosDatabound.PopularDropDownListOrdernacao(barraPaginacao.DDLOrdenacao); if (!string.IsNullOrWhiteSpace(System.Web.HttpContext.Current.Request.QueryString["order"])) { barraPaginacao.DDLOrdenacao.SelectedValue = System.Web.HttpContext.Current.Request.QueryString["order"]; } } else { barraPaginacao.DDLOrdenacaoVisible = false; } } } if (dadosDatabound.OnItemDataBound != null) { dadosDatabound.OnItemDataBound(sender, e); } } }