L’ajout de datatable dans l’ensemble de données est toujours vide même si datatable comporte des lignes

la programmation


J’ai un ensemble de données avec les résultats que j’obtiens de la base de données, je le garde comme ensemble de données de base et j’aimerais que tout filtrage soit effectué sur le deuxième ensemble de données.

Je m’assure d’avoir les données filtrées sur datatable mais lorsque j’utilise dataset.table.add

l’ensemble de données est toujours vide

code ci-dessous

protected void showMembers(Boolean filtered=false)
      {
          using (var cn = GetConnection())
          {
              cn.Open();
              string cmsGetProfiles = "SELECT * FROM [Vm_siteMembers] order by [Last Login Time] desc ";

              SqlDataAdapter EventsAdapter = new SqlDataAdapter(cmsGetProfiles, cn);
              BaseMembersListDS.Clear();// this DataSet defined as public static

              EventsAdapter.Fill(BaseMembersListDS);

              using (DataSet filteredMemberListDS = new DataSet())
              {
                  filteredMemberListDS.Merge(BaseMembersListDS.Tables[0]);
                  if (filtered)
                  {
                      DataTable dt = new DataTable(); dt.TableName = "filtered";

                      filteredMemberListDS.Clear();
                      foreach (var item in BaseMembersListDS.Tables[0].Columns)
                          dt.Columns.Add(item.ToString());

                      foreach (DataRow dr in BaseMembersListDS.Tables[0].AsEnumerable().Take(5))
                          dt.ImportRow(dr);

                      filteredMemberListDS.Tables.Add(dt);
                  }
                  MembersdataBind(filteredMemberListDS);//why filteredMemberListDS is empty
              }
          }
      }

      protected void MembersdataBind(DataSet filteredMemberList)
      {

          MemebersDdl.DataSource = filteredMemberList;
          MemebersDdl.DataBind();
      }

Ce que j’ai essayé :

Columns headers on datatable match by doing this

foreach (var item in BaseMembersListDS.Tables[0].Columns)
                            dt.Columns.Add(item.ToString());

Solution 1

DÉBUGEUR ! Gâchez le code sous le débogueur et définissez un point d’arrêt sur la ligne qui remplit le DataSet. Exécutez le code ligne par ligne et passez la souris sur les variables pour voir leur contenu. Vous auriez pu le comprendre en quelques secondes !

Le problème que vous examinez est évident. Vous fusionnez une table que vous avez obtenue dans un nouveau DataSet, filteredMemberListDS, alors tu as appelé filteredMemberListDS.Clear() dessus, ce qui a tué toutes les tables du DataSet, et vous vous demandez pourquoi vous n’en récupérez aucune donnée ? VOUS AVEZ TUÉ LES TABLES DE L’ENSEMBLE DE DONNÉES !

コメント

タイトルとURLをコピーしました