尽管数据表有行,但将数据表添加到数据集中始终为空


我有一个数据集,其中包含从数据库获得的结果,我将其保留为基础数据集,并希望对第二个数据集进行任何过滤。

我确保数据表上有过滤后的数据,但是当我使用 dataset.table.add 时

数据集始终为空

下面的代码

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

我尝试过的:

Columns headers on datatable match by doing this

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

解决方案1

调试器! 破坏调试器下的代码并在填充数据集的行上设置断点。 一次执行一行代码,并将鼠标悬停在变量上以查看其内容。 你可以在几秒钟内就弄清楚这一点!

你所看到的问题是显而易见的。 您将获得的表合并到新的数据集中, filteredMemberListDS, 然后你打电话 filteredMemberListDS.Clear() ,它杀死了 DataSet 中的所有表,您想知道为什么没有从中得到任何数据? 您杀死了数据集中的表格!

コメント

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