我正在构建一个简单的胜利形式的应用程序与一个数据网格,一个文本框。 我有大约10K的名字记录。文本框自动完成 - Winform + LINQ
我想要做的就是实现某种形式的自动完成功能,这样当用户键入到文本框,数据网格被更新,以显示相应的比赛。
只是为了测试这一点,我有一个DataContext对象,它返回名称表,我把一些代码在textBox1_TextChanged事件数据源与
this.dataGrid1.DataSource = (from p in connectionWrapper.getConnectionObj.PatientsNormalizeds where p.Name.Contains(textBox1.Text) select p).Take(30);
这工作在本地连接罚款复位但是当从远程SQL服务器提取数据时,这当然太慢了,打字变得缓慢并且对于用户来说是不可接受的。
只是不知道什么可以在没有改变设计来完成。我当然可以在form_loading中将整个表格加载到列表或DataTable中,并针对它执行搜索,但这会导致表单停止响应3秒左右...
这对大多数开发人员来说可能非常简单,但我很新。
谢谢!
其实,你首先选择包含在DB用户输入的所有名称,只有在这之后,你采取的第一个30个结果。但你的数据库已经完全处理!您应该在找到30个第一个结果后立即停止您的查询。我不太了解LINQ或SQL,但如果你这样做,解决方案应该很简单。 – 2010-11-16 13:44:01
是一个字符串还是填充一个对象?有时候,如果你返回一些对象,它会显着减慢你的加载时间,因为它必须填充每个对象。 – Gage 2010-11-16 13:46:08
这是一个对象,但没有什么幻想,只是名称,dob,电话#等等等。 – Rillanon 2010-11-16 13:53:02