我有一个包含100,000条记录的表,我有一个方法(使用实体框架)检索10条记录,我给它跳过多少条记录来获取接下来的10条记录。
List<Item> GetRecords(int skip = 0);
我在列表中加载前10条记录,并将其设置为UltraGrid的数据源,如何调用该方法获取接下来的10条记录,并在滚动到达底部或接近时将其添加到UltraGrid中到达底部?
答案 0 :(得分:8)
我有一个满足您要求的解决方案。希望这可以帮助你..
首先,创建一个名为&#34; test&#34;的窗体。 (说).. 在表单中添加一个ultraGrid ..
检查以下代码:
public partial class test : Form
{
DataTable dtSource = new DataTable();
int takecount = 50;
int skipcount = 0;
DataTable dtResult;
// CONSTRUCTOR
public test()
{
InitializeComponent();
// Fill Dummy data here as datasource...
dtSource.Columns.Add("SNo", typeof(int));
dtSource.Columns.Add("Name", typeof(string));
dtSource.Columns.Add("Address", typeof(string));
int i = 1;
while (i <= 500)
{
dtSource.Rows.Add(new object[] { i, "Name: " + i, "Address " + i });
i++;
}
dtResult = dtSource.Copy();
dtResult.Clear();
}
// ON FORM LOAD FUNCTION CALL
private void test_Load(object sender, EventArgs e)
{
ultraGrid1.DataSource = dt_takeCount();
ultraGrid1.DataBind();
}
private DataTable dt_takeCount()
{
if (dtSource.Rows.Count - skipcount <= takecount)
{
takecount = dtSource.Rows.Count - skipcount;
}
foreach (var item in dtSource.AsEnumerable().Skip(skipcount).Take(takecount))
{
dtResult.Rows.Add(new object[] { item.Field<int>("SNo"), item.Field<string>("Name"), item.Field<string>("Address") });
}
if (dtSource.Rows.Count - skipcount >= takecount)
{
skipcount += takecount;
}
return dtResult;
}
// EVENT FIRED WHEN ON AFTERROWREGIONSCROLL
private void ultraGrid1_AfterRowRegionScroll(object sender, Infragistics.Win.UltraWinGrid.RowScrollRegionEventArgs e)
{
int _pos = e.RowScrollRegion.ScrollPosition;
if (ultraGrid1.Rows.Count - _pos < takecount)
{
dt_takeCount();
}
}
}
以上代码完全有效.. - &GT; &#34; ultraGrid1_AfterRowRegionScroll&#34;功能是&#34; AfterRowRegionScroll&#34;事件功能
- &GT;但请确保当您选择&#34; takecount&#34;时,它会生成滚动条, - &GT;当你运行上面的代码时...当你滚动到第500行时,行将更新50,因为它是最后一行。