Agregar una tabla de datos al conjunto de datos siempre está vacío, aunque la tabla de datos tiene filas

programación


Tengo un conjunto de datos con los resultados que obtengo de la base de datos, lo mantengo como un conjunto de datos base y me gustaría que cualquier filtrado se realice en el segundo conjunto de datos.

Me aseguro de tener los datos filtrados en datatable pero cuando uso dataset.table.add

el conjunto de datos siempre está vacío

código a continuación

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();
      }

Lo que he probado:

Columns headers on datatable match by doing this

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

Solución 1

¡DEPURADOR! Arruine el código bajo el depurador y establezca un punto de interrupción en la línea que llena el DataSet. Ejecute el código línea por línea y pase el mouse sobre las variables para ver su contenido. ¡Podrías haberlo descubierto en segundos!

El problema que estás viendo es obvio. Usted fusiona una tabla que obtuvo en un nuevo conjunto de datos, filteredMemberListDS, entonces llamaste filteredMemberListDS.Clear() en él, lo que eliminó todas las tablas en el DataSety te preguntas por qué no obtienes datos de él. ¡MATASTE LAS TABLAS DEL CONJUNTO DE DATOS!

コメント

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