Asp.net DataGrid——一列使用与其他列不同的数据

Asp.net DataGrid——一列使用与其他列不同的数据,asp.net,datagrid,datagridtemplatecolumn,Asp.net,Datagrid,Datagridtemplatecolumn,我有一个DataGrid绑定到一个DataTable,结果显示了三个BoundColumns 我希望有一个与不同数据连接的第四列——例如,如果DataGrid中的第3列是用户ID,我希望使用它来查询数据库并检索用户的名字,并在第四列中显示它 有没有什么推荐的方法?我不是DataGrid专家,但我应该看看TemplateColumn或者类似的东西吗 我应该将所有查询挂接到哪个事件,OnItemDataBound?建议的方法是返回用户的名字作为原始查询的一部分,并只使用BoundColumn。如果需

我有一个
DataGrid
绑定到一个
DataTable
,结果显示了三个
BoundColumn
s

我希望有一个与不同数据连接的第四列——例如,如果DataGrid中的第3列是用户ID,我希望使用它来查询数据库并检索用户的名字,并在第四列中显示它

有没有什么推荐的方法?我不是DataGrid专家,但我应该看看
TemplateColumn
或者类似的东西吗


我应该将所有查询挂接到哪个事件,
OnItemDataBound

建议的方法是返回用户的名字作为原始查询的一部分,并只使用
BoundColumn
。如果需要在显示之前修改数据,则可以使用
TemplateColumn
OnItemDataBound
事件来操作数据

运行查询
OnItemDataBound
不是我鼓励的事情。所以,如果您的网格一次显示100条记录,您希望在每个页面加载时运行100个额外的查询吗?如果您实现了这一点,在测试期间可能会在合理的范围内运行。但一旦加载,你会发现运行数百个额外的查询不是一个好主意。。。根据数据库结构和查询的复杂性,可以通过修复原始查询或生成非规范化表来解决这个问题


当我遇到类似问题时,我使用了非规范化的表路由。

推荐的方法是返回用户的名字作为原始查询的一部分,只使用
BoundColumn
。如果需要在显示之前修改数据,则可以使用
TemplateColumn
OnItemDataBound
事件来操作数据

运行查询
OnItemDataBound
不是我鼓励的事情。所以,如果您的网格一次显示100条记录,您希望在每个页面加载时运行100个额外的查询吗?如果您实现了这一点,在测试期间可能会在合理的范围内运行。但一旦加载,你会发现运行数百个额外的查询不是一个好主意。。。根据数据库结构和查询的复杂性,可以通过修复原始查询或生成非规范化表来解决这个问题


当我遇到类似的问题时,我使用了非规范化的表路由。

在sql语句中使用联接来获取其他值

在sql语句中使用join来获取另一个值

你不想运行100个额外的查询,这是完全正确的。但是问题是,原始数据正在从Excel工作表转换为我上面提到的DataTable,而我在该工作表中没有用户的名字。好消息是,对于任何给定的页面,工作表中的条目不会超过100个(商业人士表示衷心的祝贺)。@larryq:如果是这样,你最好运行第二个查询来抓取所有用户。然后向datatable中添加一列(在代码中),并为每一行填写用户名。完成后,进行数据绑定。你不想再运行100个查询,这是绝对正确的。但是问题是,原始数据正在从Excel工作表转换为我上面提到的DataTable,而我在该工作表中没有用户的名字。好消息是,对于任何给定的页面,工作表中的条目不会超过100个(商业人士表示衷心的祝贺)。@larryq:如果是这样,你最好运行第二个查询来抓取所有用户。然后向datatable中添加一列(在代码中),并为每一行填写用户名。完成后,进行数据绑定。