listview.ItemAppearing += (sender, e) =>
{
// Check if you reach the bottom
if(e.Item == lastitem)
{
// load more items
}
};
我试图通过切片从结果中获取行。 我希望:前五个然后退出脚本。接下来的开始将是第二个五结果(6-10)等。 我如何管理它,例如使用MaxID或某种迭代器。
答案 0 :(得分:0)
您不能,因为读者需要一个开放且可用的集合来从中获取值。如果您要再次执行查询,则每次都不是更好的做法,您可以使用DataTables来满足此要求。为此,您可以使用以下方法:
// populate the DataTable using adapter
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = new SqlCommand("SELECT TOP 1000 [Id] ,[Name] FROM [SomeBase]", connection);
adapter.Fill(dataset);
// Call the method whenever you need Slice
// Which will give you a List<DataRow>
public List<DataRow> GetMySlice(DataTable inputDataTable, int minSlice, int maxSlice)
{
return inputDataTable.AsEnumerable()
.Skip(minSlice)
.Take(maxSlice)
.ToList();
}
如果您需要将结果作为DataTable,则意味着在这种情况下您可以使用.CopyToDataTable()
代替.ToList()
,方法的返回类型将为DataTable
而不是{{1} }}
答案 1 :(得分:0)
如果你仍然需要分页并使用MS SQL-Server,你可以添加到查询SELECT子句, ROW_NUMBER() OVER (ORDER BY <ColumnName>)
并用SELECT *
包装它。比使用带参数的WHERE
子句。
SELECT * FROM
(
SELECT [Id] ,[Name], ROW_NUMBER() OVER (ORDER BY <ColumnName>) AS RNUM FROM [SomeBase]
) AS T
WHERE (T.RNUM BETWEEN @from AND @to)