我有一个有10行的数据表说,其中一列 随机编号1到10。 我想对它们进行排序。通常,我这样做:从c#中的数据视图排序后选择排名前N行
DataView Dv = new DataView(dtPost, "", "views desc", DataViewRowState.Unchanged);
repeater.DataSource = Dv;
repeater.DataBind();
现在,我只想绑定此Dataview中的前5行。如果我试试这个:
DvPopBlogs.Table.Rows.Cast<System.Data.DataRow>().Take(5);
OR
DvPopBlogs.Table.AsEnumerable().Take(5); //this usually works if sorting wasnt necessary
它的工作原理,但dataView完全忘记排序,只是从顶部选择5行。
我也尝试过使用所有DataViewRowStates。如何选择排序后的前5行?
我似乎用尽了想法! 请帮忙!
是啊,我发现了这一点,当我试图调试,数据视图似乎有的排序顺序,但只要我添加表,排序顺序丢了,现在我明白表是原始数据。谢谢。但是,DvPopBlogs是一个DataView,它既没有.Take()或.DataViewRows()方法! – iamserious 2010-09-30 13:33:00
尝试使用dvPopBlogs.AsEnumerable()。或者在最坏的情况下dvPopBlogs.ToTable()后者将从视图的内容创建一个新的DataTable。 – 2010-09-30 14:34:26
嗨,对不起,如果我使用.ToTable()方法中继器抱怨(绑定)某个列不存在。调试显示它确实存在,可能是我做错了什么,我相信你没法找到完整的代码。你建议我现在做什么?谢谢,并且很抱歉提出太多问题! – iamserious 2010-09-30 16:48:30