[ad_1]
لدي مجموعة بيانات تحتوي على النتائج التي أحصل عليها من قاعدة البيانات، وأحتفظ بها كمجموعة بيانات أساسية وأرغب في إجراء أي تصفية على مجموعة البيانات الثانية.
أتأكد من حصولي على البيانات التي تمت تصفيتها في 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، وأنت تتساءل لماذا لا تحصل على أي بيانات منه؟ لقد قتلت الجداول في مجموعة البيانات!
[ad_2]
コメント