2013-03-21 67 views
0

我有DataGrid我绑定到DataTable,并显示三个BoundColumnDataGrid--一列使用与其他数据不同的数据

我想有第四列连接不同的数据 - 例如,如果DataGrid中的列#3是UserID,我想用它来查询数据库并检索用户的名字,并将其显示在第四栏中。

是否有任何建议的方法呢?我不是DataGrid的专家,但我应该看看TemplateColumn还是其他方面的内容?

哪个事件我应该钩这一切查询到,OnItemDataBound

回答

3

推荐的方法是为原始查询的一部分返回用户的名字,只是用BoundColumn。如果您需要在显示之前修改数据,那么您可以使用TemplateColumnOnItemDataBound事件来处理您的数据。

运行查询OnItemDataBound是不是我会永远鼓励。因此,如果您的网格一次显示100条记录,那么您希望每页加载运行100个额外的查询?这是如果你实现的话,可能在测试期间有理由运行。一旦加载,你会发现运行数百个额外的查询并不是一个好主意......它可以通过修复原始查询或者根据你的数据库结构和你的复杂性来制作一个非规范化的表格来解决查询。

当我跑进类似的问题,我去了非规范化的表路线。

+0

你完全正确的是不想运行100多个额外的查询。然而,问题在于原始数据正在从Excel工作表转换到上面提到的DataTable--我在该工作表中没有该用户的名字。好消息是,任何给定页面的工作表中不会有超过100个条目(越过他们的心,商界人士所做的)。 – larryq 2013-03-21 21:48:55

+2

@larryq:在这种情况下,最好的办法是运行第二个查询来抓取所有的用户。然后将一列添加到数据表(在代码中)并填写每行的用户名。一旦完成,请执行数据绑定。 – NotMe 2013-03-21 23:12:28

+0

@Chris Lively:很棒的主意,感谢它。 – larryq 2013-03-22 04:24:11

0

使用在SQL语句中加入以获得其他值。

相关问题