我特别考虑的是如何在使用c#或Java等语言时显示分页控件。
如果我有x个项目,我想在每页y块中显示,需要多少页?
我特别考虑的是如何在使用c#或Java等语言时显示分页控件。
如果我有x个项目,我想在每页y块中显示,需要多少页?
当前回答
一个泛型方法,你可以迭代它的结果:
public static Object[][] chunk(Object[] src, int chunkSize) {
int overflow = src.length%chunkSize;
int numChunks = (src.length/chunkSize) + (overflow>0?1:0);
Object[][] dest = new Object[numChunks][];
for (int i=0; i<numChunks; i++) {
dest[i] = new Object[ (i<numChunks-1 || overflow==0) ? chunkSize : overflow ];
System.arraycopy(src, i*chunkSize, dest[i], 0, dest[i].length);
}
return dest;
}
其他回答
一个泛型方法,你可以迭代它的结果:
public static Object[][] chunk(Object[] src, int chunkSize) {
int overflow = src.length%chunkSize;
int numChunks = (src.length/chunkSize) + (overflow>0?1:0);
Object[][] dest = new Object[numChunks][];
for (int i=0; i<numChunks; i++) {
dest[i] = new Object[ (i<numChunks-1 || overflow==0) ? chunkSize : overflow ];
System.arraycopy(src, i*chunkSize, dest[i], 0, dest[i].length);
}
return dest;
}
我做以下,处理任何溢出:
var totalPages = totalResults.IsDivisble(recordsperpage) ? totalResults/(recordsperpage) : totalResults/(recordsperpage) + 1;
并使用这个扩展,如果有0结果:
public static bool IsDivisble(this int x, int n)
{
return (x%n) == 0;
}
此外,对于当前的页码(没有被问到,但可能有用):
var currentPage = (int) Math.Ceiling(recordsperpage/(double) recordsperpage) + 1;
你可以使用
(int)Math.Ceiling(((decimal)model.RecordCount )/ ((decimal)4));
您需要执行浮点除法,然后使用ceiling函数将值四舍五入到下一个整数。
我有一个类似的需求,我需要将分钟转换为小时和分钟。我用的是:
int hrs = 0; int mins = 0;
float tm = totalmins;
if ( tm > 60 ) ( hrs = (int) (tm / 60);
mins = (int) (tm - (hrs * 60));
System.out.println("Total time in Hours & Minutes = " + hrs + ":" + mins);