[ad_1]
我有一个数据集,其中包含从数据库获得的结果,我将其保留为基础数据集,并希望对第二个数据集进行任何过滤。
我确保数据表上有过滤后的数据,但是当我使用 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 中的所有表,您想知道为什么没有从中得到任何数据? 您杀死了数据集中的表格!
[ad_2]
コメント