IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SharePoint .NET Discussion :

Tri dans un gridview


Sujet :

SharePoint .NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 27
    Par défaut Tri dans un gridview
    Bonjour à tous,
    Je me permets de solliciter votre aide pour le tri dans un tableau d'un webpart de SharePoint qui ne veut pas se faire.
    Voila mon code, si quelqu'un a une petite minute pour y jeter un petit coup d'oeil :

    private void BuildDataSet(int mode)
    {
    if (SelectedDoc == null)
    {
    foreach (SPList sp in doclists)
    {
    if (sp.Title.ToString() == "RDD")
    {
    docList = sp;
    }
    }

    }
    else
    {
    docList = SelectedDoc.List ;
    this.oData.Tables[0].Rows.Clear ();
    HttpContext.Current.Session["dataSet"] = oData;
    Update_Data(mode);
    this.oGrid.DataBind();
    }
    //On dit à Sharepoint de ne pas rediriger automatiquement vers la page "Accès Refusé"
    SPContext.Current.Site.CatchAccessDeniedException = false;
    //On vérifie si l'utilisateur peut ajouter des éléments
    if (docList.DoesUserHavePermissions(SPBasePermissions.AddListItems))
    {
    this.btn_Delete.Enabled = true;
    this.btn_Delete.Visible = true;
    }
    else
    {
    this.btn_Delete.Enabled = false;
    this.btn_Delete.Visible = false;
    }
    DataSet dsSession = HttpContext.Current.Session["dataSet"] as DataSet;

    if (dsSession == null)
    {
    //Add a table
    this.oData = new DataSet();
    this.oData.Tables.Add();
    this.oData.Tables[0].TableName = "RDD";
    this.oData.Tables[0].Columns.Add("LinkFilename");
    this.oData.Tables[0].Columns.Add("Rdd_No");
    this.oData.Tables[0].Columns.Add("Debtor_Name");
    this.oData.Tables[0].Columns.Add("Loading_Date");

    DataColumn chk = new DataColumn("Selection", typeof(bool));
    chk.DefaultValue = false;
    chk.ReadOnly = false;
    this.oData.Tables[0].Columns.Add(chk);

    HttpContext.Current.Session["dataSet"] = oData;
    Update_Data(mode);
    }
    else
    {
    oData = dsSession;
    }
    this.oGrid.DataBind();
    }

    private void Update_Data(int mode)
    {
    SPListItemCollection SelectedList = null;
    if (mode == 0)
    SelectedList = docList.Items;
    else
    SelectedList = SelectedDoc;
    foreach (SPListItem listItem in SelectedList)
    {
    DataRow row1 = this.oData.Tables[0].NewRow();
    row1["LinkFilename"] = listItem.Web.Url + "/" + listItem.ParentList.Title + "/" + listItem["LinkFilename"].ToString();
    row1["Rdd_No"] = listItem["Rdd No"].ToString();
    row1["Debtor_Name"] = listItem["Debtor Name"].ToString();
    row1["Loading_Date"] = listItem["Loading Date"].ToString();
    this.oData.Tables[0].Rows.Add(row1);
    }
    }

    protected override void CreateChildControls()
    {
    //Make sure we call this first as required by the ajax base part.
    base.CreateChildControls();

    string site_name = (string)config.GetValue("Site", typeof(string));

    using (CurentSite = new SPSite(site_name))
    {

    CurentSite.AllowUnsafeUpdates = true;
    CurentSite.CatchAccessDeniedException = false;
    //SPWeb CurrentWeb = CurentSite.OpenWeb();
    using (CurrentWeb = CurentSite.OpenWeb())
    {
    CurrentWeb.AllowUnsafeUpdates = true;
    doclists = CurrentWeb.GetListsOfType(SPBaseType.DocumentLibrary);
    }
    }

    this.BuildDataSet(0);

    this.oGrid.AutoGenerateColumns = false;

    this.Controls.Add(oGrid);

    this.oGrid.DataSource = this.GetGridDataSource();
    this.oGrid.DataKeyNames = new string[] { "ID" };

    this.oGrid.AllowSorting = true;
    this.oGrid.AllowPaging = true;
    this.oGrid.PagerTemplate = null;
    this.oGrid.PageSize = (int)config.GetValue(("Page_Size"), typeof(int));
    this.oGrid.PagerSettings.Mode = PagerButtons.NumericFirstLast ;

    this.oGrid.PageIndexChanging += new System.Web.UI.WebControls.GridViewPageEventHandler(oGrid_PageIndexChanging);
    this.oGrid.Sorting += new GridViewSortEventHandler(oGrid_Sorting);


    //Add columsns the gridview control..
    TemplateField colonneChk = new TemplateField();

    colonneChk.HeaderText = "";
    colonneChk.ItemTemplate = new ColonneModele(this, TypeColonne.CheckBox, "Choix");
    this.oGrid.Columns.Add(colonneChk);

    //Ajout de colonne Modele

    TemplateField colonneModele = new TemplateField();

    colonneModele.HeaderText = "";
    colonneModele.ItemTemplate = new ColonneModele(this, TypeColonne.Image, "Document");
    this.oGrid.Columns.Add(colonneModele);


    ////Add columsns the gridview control..
    BoundField colFirstName = new BoundField();
    colFirstName.DataField = "Rdd_No";
    colFirstName.HeaderText = "Rdd No";
    colFirstName.SortExpression = "Rdd_No";
    this.oGrid.Columns.Add(colFirstName);

    BoundField colFirstName1 = new BoundField();
    colFirstName1.DataField = "Debtor_Name";
    colFirstName1.HeaderText = "Debtor Name";
    colFirstName1.SortExpression = "Debtor_Name";
    this.oGrid.Columns.Add(colFirstName1);

    BoundField colFirstName2 = new BoundField();
    colFirstName2.DataField = "Loading_Date";
    colFirstName2.HeaderText = "Loading Date";
    colFirstName2.SortExpression = "Loading_Date";
    this.oGrid.Columns.Add(colFirstName2);

    BoundField colFirstNameDerniere = new BoundField();
    colFirstNameDerniere.DataField = "ID";
    colFirstNameDerniere.Visible = false;
    this.oGrid.Columns.Add(colFirstNameDerniere);

    this.oGrid.HeaderStyle.Font.Bold = true;
    this.oGrid.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;

    this.oPanel = new HtmlTable();
    CreateUserPanel();
    this.Controls.Add(this.oPanel);

    this.oGrid.DataBind();
    HttpContext.Current.Session["dataSet"] = oData;
    }


    Merci d'avance !

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 760
    Par défaut
    Salut,
    C'est normal que tu n'arrives pas à trier, car tu n'as pas implémenté la méthode oGrid_Sorting

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 27
    Par défaut
    Bon, j'ai implémenté la dite méthode, et ça ne marche toujours pas. Y'a autre chose à faire ?


    void oGrid_Sorting(object sender, GridViewSortEventArgs e)
    {
    string lastExpression = "";
    if (ViewState["SortExpression"] != null)
    lastExpression = ViewState["SortExpression"].ToString();

    string lastDirection = "asc";
    if (ViewState["SortDirection"] != null)
    lastDirection = ViewState["SortDirection"].ToString();

    string newDirection = "asc";
    if (e.SortExpression == lastExpression)
    newDirection = (lastDirection == "asc") ? "desc" : "asc";

    this.SortExpression = e.SortExpression;
    this.SortDirection = newDirection;

    this.oData.Tables[0].DefaultView.Sort = e.SortExpression + " " + newDirection;
    this.oGrid.DataBind();
    }

Discussions similaires

  1. Tri dans une gridview
    Par ERICLEUN dans le forum ASP.NET
    Réponses: 8
    Dernier message: 20/12/2012, 11h27
  2. Réponses: 11
    Dernier message: 03/09/2010, 10h22
  3. Réponses: 6
    Dernier message: 12/07/2010, 16h38
  4. Erreur lors du tri dans un gridview
    Par Fngonka dans le forum ASP.NET
    Réponses: 3
    Dernier message: 09/02/2009, 10h18
  5. Réponses: 5
    Dernier message: 19/11/2007, 11h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo