我正在为datagridview
排序选项combobox
。太慢并且排序不起作用
private DataClasses1DataContext db = new DataClasses1DataContext();
private int numberOfObjectsPerPage = 20;
private int CurrentPageIndex = 1;
private string ordering = "c.name ascending";
private void Form1_Load(object sender, EventArgs e)
{
GetData(CurrentPageIndex);
}
private void GetData(int page)
{
page = page - 1;
var query = (from c in db.enterprise
orderby ordering
select new { c.id, c.name, c.phone, c.email, c.type, c.city })
.Skip(numberOfObjectsPerPage * page).Take(numberOfObjectsPerPage);
dataGridView1.DataSource = query;
}
private void orderBtn_Click(object sender, EventArgs e)
{
if (orderCB.SelectedIndex == 1)
{
ordering = "c.name descending";
}
else if (orderCB.SelectedIndex == 2)
{
ordering = "c.id ascending";
}
else if (orderCB.SelectedIndex == 3)
{
ordering = "c.id descending";
}
else
{
ordering = "c.name ascending";
}
GetData(CurrentPageIndex);
}
我在这里遇到了两个问题。
- 我目前的数据是关于
2.500
的行。我正在使用分页,因此它将显示20
数据/页面,但在加载datagridview
时仍然太慢。什么可能是错的? - 我的订购按钮不起作用。
这是一个用C#我的第一次,也许我错过的东西在这里:d
更新
所以我改变了我的代码,建议从the_joric
Func<IEnumerable<cooperations>, IEnumerable<cooperations>> ordering = t => t;
我改变DBType到基于此参考的合作(希望我是对的:D)
但是后来我的DataGridView不显示任何东西,我得到的是这样的
System.Linq.Enumerable+<TakeIterator>d__3a`1[<>f__AnonymousType0`7[System.Int32,System.String,System.String,System.String,System.String,System.String,System.String]]
A first chance exception of type 'System.ArgumentOutOfRangeException' occurred in mscorlib.dll
对于性能问题,你还是回来了整个2500行到客户端上的每个查询。 –
我认为它在MySQL中的工作方式与限制和偏移量相同:D – l1th1um