Ir para o conteúdo

Paginando Gridview Usando Webusercontrol


Criado por Ivan Teles, Out 04 2010 13:33

Não há respostas para este tópico
  • Por favor, faça o login para responder

#1 Ivan Teles

Ivan Teles
  • Ivan Teles
  • Colaborador
  • 7 Revisões

Revisou 04 outubro 2010 - 13:33

1 – Crie um novo web user control.
2 – No arquivo “ascx”, coloque
<div class="pager">
    <span class="results1">
        <asp:ImageButton AlternateText="Primeira página" ToolTip="Primeira página" ID="ImageButtonFirst" runat="server" ImageUrl="Images/PgFirst.gif" Width="8" Height="9" CommandName="Page" CommandArgument="First" />
        &nbsp;
        <asp:ImageButton AlternateText="Página anterior" ToolTip="Página anterior" ID="ImageButtonPrev" runat="server" ImageUrl="Images/PgPrev.gif" Width="5" Height="9" CommandName="Page" CommandArgument="Prev" />
        &nbsp;
        <span id="LabelPage" runat="server" />
        <asp:TextBox ID="TextBoxPage" runat="server" Columns="5" AutoPostBack="true" ontextchanged="TextBoxPage_TextChanged" Width="20px" CssClass="droplist" />
        de
        <span id="LabelNumberOfPages" runat="server" />
        &nbsp;
        <asp:ImageButton AlternateText="Próxima página" ToolTip="Próxima página" ID="ImageButtonNext" runat="server" ImageUrl="Images/PgNext.gif" Width="5" Height="9" CommandName="Page" CommandArgument="Next" />
        &nbsp;
        <asp:ImageButton AlternateText="Página anterior" ToolTip="Página anterior" ID="ImageButtonLast" runat="server" ImageUrl="Images/PgLast.gif" Width="8" Height="9" CommandName="Page" CommandArgument="Last" />
    </span>
    <span class="results2">
        &nbsp;Registros por página: <asp:DropDownList ID="DropDownListPageSize" runat="server" AutoPostBack="true" CssClass="droplist" onselectedindexchanged="DropDownListPageSize_SelectedIndexChanged">
            <asp:ListItem Value="20" />
            <asp:ListItem Value="40" />
        </asp:DropDownList>
    </span>
</div>

3 – No arquivo “ascx.cs”
private GridView _gridView;
    protected void Page_Load(object sender, EventArgs e) {
        Control c = Parent;
        while (c != null) {
            if (c is GridView) {
                _gridView = (GridView)c;
                break;
            }
            c = c.Parent;
        }
    }
    protected void TextBoxPage_TextChanged(object sender, EventArgs e) {
        if (_gridView == null) {
            return;
        }
        int page;
        if (int.TryParse(TextBoxPage.Text.Trim(), out page)) {
            if (page <= 0) {
                page = 1;
            }
            if (page > _gridView.PageCount) {
                page = _gridView.PageCount;
            }
            _gridView.PageIndex = page - 1;
        }
        TextBoxPage.Text = (_gridView.PageIndex + 1).ToString();
    }
    protected void DropDownListPageSize_SelectedIndexChanged(object sender, EventArgs e) {
        if (_gridView == null) {
            return;
        }
        DropDownList dropdownlistpagersize = (DropDownList)sender;
        _gridView.PageSize = Convert.ToInt32(dropdownlistpagersize.SelectedValue);
        int pageindex = _gridView.PageIndex;
        _gridView.DataBind();
        if (_gridView.PageIndex != pageindex) {
            //if page index changed it means the previous page was not valid and was adjusted. Rebind to fill control with adjusted page
            _gridView.DataBind();
        }
    }
    protected void Page_PreRender(object sender, EventArgs e) {
        if (_gridView != null) {
            LabelNumberOfPages.InnerText = _gridView.PageCount.ToString();
            TextBoxPage.Text = (_gridView.PageIndex + 1).ToString();
            DropDownListPageSize.SelectedValue = _gridView.PageSize.ToString();
        }
    }
4 – Crie o css para formar a paginação
div.pager { padding: 3px 6px 3px 6px; }
span.results1 { float: left; }
span.results2 { float: right; }
div.results { display: inline; position: relative; margin-top: -1.75em; float: right; }
.droplist { padding: 0px;  font-size: .95em; color: #666666; }
5 – em suas páginas que utilizam grid view
Registre seu web user control
<%@ Register src="meucontrole.ascx" tagname="controle" tagprefix="uc1" %>
E em seu Grid
<PagerTemplate>
     <uc1:controle ID="pager" runat="server" />
</PagerTemplate>
6 – e obtenha o seguinte resultado:
Imagem postada

Espero que Ajude!!!




1 usuário(s) está(ão) lendo este código

1 membro(s), 0 visitante(s) e 0 membros anônimo(s)