डेटाटेबल को डेटासेट में जोड़ना हमेशा खाली होता है, डेटाटेबल में पंक्तियाँ नहीं होती हैं


मेरे पास डीबी से प्राप्त परिणामों वाला एक डेटासेट है, मैं इसे बेस डेटासेट के रूप में रखता हूं और चाहता हूं कि कोई भी फ़िल्टरिंग दूसरे डेटासेट पर की जाएगी।

मैं सुनिश्चित करता हूं कि मेरे पास डेटाटेबल पर फ़िल्टर किया गया डेटा है लेकिन जब मैं डेटासेट.टेबल.एड का उपयोग करता हूं

डेटासेट हमेशा खाली रहता है

नीचे दिया गया कोड

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(), जिसने डेटासेट में सभी तालिकाओं को नष्ट कर दिया, और आप सोच रहे हैं कि आपको इससे कोई डेटा वापस क्यों नहीं मिलता? आपने डेटासेट में तालिकाएँ ख़त्म कर दीं!

コメント

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