Attention problème de defaultview de datatable

Soyez le premier à donner votre avis sur cette source.

Snippet vu 13 207 fois - Téléchargée 26 fois

Contenu du snippet

Voila je poste cette mini source juste par information pour éviter que quelqu'un d'autre galère comme moi...
Parce que j'ai perdu carrement une journé à résoudre le problème.

Voila, en gros je stockais une DataTable dans une variable de Session ( ce qui est super utils quand on réfléchit bien ) et je la rapelait pour la remplir en début de page pour l'utiliser dans un Datagrid Paginer.
Le problème est que la méthode par DefaultView ne marchait qu'une seul fois mais au rechargement...je n'avais pu les données dans le datagrid alors que le datatable était parfaitement remplit...C'est la que je ne comprenait pas...

Et la solution :
Ben il faut juste utilisé New DataView(Datable) et voila la solution est bonne...
Par contre ne me demander pas pourquoi...

J'espere que ca va aider certains d'entre vous qui galere peut etre parce que dans la plupart des sources que j'ai vu, il n'y a que le DefaultView qui est utilisé.

Remarque: Il y a peut etre aussi le meme problème pour les DataSet...

++

Source / Exemple :


// Création de la variable de session
  public class Util : System.Web.UI.Page
  {
    public DataTable DataTable
    {
      get{ return (DataTable)Session["DataTable"]; }
      set{ Session["DataTable"]=value; }
    }
    public MySqlConnection Connection
    {
      get{return (MySqlConnection)Session["Connection"];  }
      set{ Session["Connection"]=value; }
    }
    public MySqlDataAdapter Adaptateur
    {
      get{ return (MySqlDataAdapter)Session["Adaptateur"]; }
      set{ Session["Adaptateur"]=value; }
    }
  }
// Appel dans n'importe quel page
...
   protected Util ut = new Util();
...
      if (!Page.IsPostBack)
      {
        try
        { 
          ut.DataTable.Reset();
          ut.Adaptateur.SelectCommand = new MySqlCommand("Select * FROM manager;", ut.Connection);
          //DataGrid1.DataSource=ut.DataTable.DefaultView; // Mauvaise méthode.C'est ici que le problème survient!!!
          DataGrid1.DataSource=new DataView(ut.DataTable); // Et voici la solution!!!
          DataGrid1.DataBind();
        }
        catch (Exception excp)
        {
          Label1.Text="Erreur!!!\r\n" + excp.ToString();
        }
      }

............................

    private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
    {
      DataGrid1.CurrentPageIndex=e.NewPageIndex;
      DataGrid1.DataSource = DataGrid1.DataSource=new DataView(ut.DataTable);
      DataGrid1.DataBind();
    }

Conclusion :


Voila pour toutes réflexions ou erreurs n'hésiter pas surtt

Pis ca fait des révisions pour utiliser les variables de session, les datagrid et le paging

En espérant que ca est servi.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.