locked
Tri et de pagination dans le contrôle GridView lorsque vous n'utilisez pas les contrôles de source de données RRS feed

  • Discussion générale

  • Parfois, on veut lier le contrôle GridView aux données sans l'aide d'un contrôle de source de données telles que le SqlDataSource ou le contrôle ObjectDataSource. Cela signifie que le tri et la pagination ne seront pas traitées automatiquement par le contrôle de source de données. Afin de mettre en œuvre le tri et la pagination, on doit traiter les évènements PageIndexChanging et Sorting  du contrôle GridView, comme illustré dans l'exemple suivant :

     

    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GridView1.DataSource = SortDataTable(GetYourDataSource(), true);
        GridView1.PageIndex = e.NewPageIndex;
        GridView1.DataBind();
    }
       
    private string GridViewSortDirection
    {
        get { return ViewState["SortDirection"] as string ?? "ASC"; }
        set { ViewState["SortDirection"] = value; }
    }
     
    private string GridViewSortExpression
    {
        get { return ViewState["SortExpression"] as string ?? string.Empty; }
        set { ViewState["SortExpression"] = value; }
    }
     
    private string ToggleSortDirection()
    {
        switch (GridViewSortDirection)
        {
            case "ASC":
                GridViewSortDirection = "DESC";
                break;
            case "DESC":
                GridViewSortDirection = "ASC";
                break;
        }
        return GridViewSortDirection;
    }
     
    protected DataView SortDataTable(DataTable dataTable, bool isPageIndexChanging)
    {
        if (dataTable != null)
        {
            DataView dataView = new DataView(dataTable);
            if (GridViewSortExpression != string.Empty)
            {
                if (isPageIndexChanging)
                {
                    dataView.Sort = string.Format("{0} {1}",                               GridViewSortExpression,GridViewSortDirection);
                }
                else
                {
                    dataView.Sort = string.Format("{0} {1}",                              GridViewSortExpression,ToggleSortDirection());
                }
            }
        return dataView;
        }
        else
        {
            return new DataView();
        }
    }
     
    protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
    {
        GridViewSortExpression = e.SortExpression;
        int pageIndex = GridView1.PageIndex;
        GridView1.DataSource = SortDataTable(GetYourDataSource(), false);
        GridView1.DataBind();
        GridView1.PageIndex = pageIndex;
    }

     

     

    Pour plusieurs informations, visitez la page Foire aux Questions – ASP.NET

     
    Alex Petrescu - MSFT
    mercredi 31 mars 2010 12:59
    Modérateur