تكون إضافة جدول البيانات إلى مجموعة البيانات فارغة دائمًا على الرغم من أن جدول البيانات يحتوي على صفوف

برمجة


لدي مجموعة بيانات تحتوي على النتائج التي أحصل عليها من قاعدة البيانات، وأحتفظ بها كمجموعة بيانات أساسية وأرغب في إجراء أي تصفية على مجموعة البيانات الثانية.

أتأكد من حصولي على البيانات التي تمت تصفيتها في datatable ولكن عندما أستخدم 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

مصحح الأخطاء! قم بإتلاف التعليمات البرمجية الموجودة ضمن مصحح الأخطاء وقم بتعيين نقطة توقف على السطر الذي يملأ DataSet. قم بتنفيذ الكود سطرًا واحدًا في كل مرة، ثم قم بتحريك الماوس فوق المتغيرات لرؤية محتواها. كان بإمكانك معرفة ذلك في ثوانٍ!

المشكلة التي تنظر إليها واضحة. يمكنك دمج جدول حصلت عليه في مجموعة بيانات جديدة، filteredMemberListDS, ثم اتصلت filteredMemberListDS.Clear() عليه، مما أدى إلى قتل كافة الجداول في DataSet، وأنت تتساءل لماذا لا تحصل على أي بيانات منه؟ لقد قتلت الجداول في مجموعة البيانات!

コメント

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