DataTable数据过滤
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DataTable数据过滤相关的知识,希望对你有一定的参考价值。
C#中我有一个DataTable,里面有30行的数据!
问题:如何查询前10行或中间10或者是后10行啊?
这个问题问得好笨!-_-!
行数固定的话遍历一下就可以了!
不固定的话这样取得的数据也没用!
这里的DataTable的行数和里面行的顺序每分每秒都可能不一样的,所以我的原意就是一次取10行而且每一次取的数据都和上一次的不一样!不知道这样能不能实现。在这先谢谢先!
public List<DataRow> GetDataRowsByIndex(DataTable dt, int LowIndex,int HiIndex)
//检测LowIndex、HiIndex参数是否超出dt索引范围,忽略此处代码
if ( LowIndex < 0 )
throw new Exception("");
…………
List<DataRow> drAry = new List<DataRow>();
for(int i = LowIndex;i<=HiIndex;i++)
drAry.Add(dt.Rows[i]);
return drAry;
如果你想随机取数据,则只需要设置LowIndex、HiIndex参数值为处于0-dt.Rows.Count区间的随机数据就行了。两者差值保持10.则可以满足你现在的要求。 参考技术A 如果是30行固定的话
用foreach遍历
设置一个计数器!
Primefaces dataTable过滤日期
【中文标题】Primefaces dataTable过滤日期【英文标题】:Primefaces dataTable filtering with date 【发布时间】:2013-12-04 13:56:51 【问题描述】:我遇到了一个特殊的问题。我有一个数据表,我想在其中过滤 primefaces 中的日期。当我使用
<p:column id="date" headerText="Manufacturing date"
filterBy="#car.dateOfManufacturing"
filterMatchMode="contains">
<p:outputLabel value="#car.dateOfManufacturing" >
</p:outputLabel>
</p:column>
然后过滤日期就可以了。但是当我使用
<p:column id="date" headerText="Manufacturing date"
filterBy="#car.dateOfManufacturing"
filterMatchMode="contains">
<p:outputLabel value="#car.dateOfManufacturing" >
<f:convertDateTime locale="de" />
</p:outputLabel>
</p:column>
过滤没有正确进行。事实上,我的观察是使用语言环境,日期格式类似于
2013 年 11 月 20 日
但即使我输入 Wed Nov .. 我也能看到过滤后的结果。 我还观察到,没有语言环境,日期显示为
2013 年 11 月 20 日星期三 13:43:37 CET 所以我猜它会根据后一个日期被过滤,即使我们在屏幕上看到不同的日期模式。
【问题讨论】:
car.dateOfManufacturing 字段的类型是什么?简单的约会?如果这是将此日期格式化为字符串的一种方式... 我目前正在使用 java.util.Date 【参考方案1】:我认为在添加到过滤器之前需要转换您的日期 (filterBy="#car.dateOfManufacturing"
)。一种简单的解决方案是将日期转换为 bean 中具有简单日期格式的字符串。
这是我的代码:
我的 RowData 包含:String entry1, String entry2, String dateString, Date date
。
我的 bean 填充数据方法:
public List<RowData> getTestData()
DateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy");
(...)
entries.add(new RowData("a1", "b1", dateFormat.format(new Date()), currentDate()));
(...)
return entries;
还有我的 XHTML:
<p:column id="date" headerText="Simple date"
filterBy="#entry.dateString"
filterMatchMode="contains">
<p:outputLabel value="#entry.dateString" >
</p:outputLabel>
</p:column>
现在我将您的代码添加到我的表中:
<p:column id="dateLocale" headerText="Locale date"
filterBy="#entry.date"
filterMatchMode="contains">
<p:outputLabel value="#entry.date" >
<f:convertDateTime locale="de" />
</p:outputLabel>
</p:column>
我的桌子:
过滤适用于语言环境日期列中的这三个日期。也许,如果我用多个日期开始测试这个问题,结果将与您的答案中描述的相同。
所以,我提供隐蔽日期到字符串或use calendar。
【讨论】:
以上是关于DataTable数据过滤的主要内容,如果未能解决你的问题,请参考以下文章