【问题标题】:DataGrid-- one column uses different data from the othersDataGrid——一列使用与其他列不同的数据
【发布时间】:2013-03-11 14:33:16
【问题描述】:

我有一个DataGrid 我正在绑定到一个DataTable,结果显示三个BoundColumns。

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

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

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

【问题讨论】:

    标签: asp.net datagrid datagridtemplatecolumn


    【解决方案1】:

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

    运行查询OnItemDataBound 是我绝不会鼓励的。因此,如果您的网格将一次显示 100 条记录,您想在每次页面加载时运行 100 个额外的查询?如果您实施,这可能会在测试期间在合理范围内运行。但是一旦在负载下,您会发现运行数百个额外的查询并不是一个好主意......它可以通过修复原始查询或根据您的数据库结构和您的复杂性制作非规范化表来解决查询。

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

    【讨论】:

    • 您不想运行 100 个额外的查询是绝对正确的。但是问题是原始数据正在从 Excel 工作表转换为我上面提到的 DataTable ——而且我在该工作表中没有用户的名字。好消息是任何给定页面的工作表中的条目不会超过 100 个(他们的心,业务人员做到了。)
    • @larryq:在这种情况下,最好的办法是运行第二个查询以获取所有用户。然后在数据表中添加一列(在代码中)并为每一行填写用户名。完成后,进行数据绑定。
    【解决方案2】:

    在您的 sql 语句中使用连接来获取其他值。

    【讨论】:

      猜你喜欢
      • 2014-06-26
      • 1970-01-01
      • 1970-01-01
      • 2016-02-20
      • 2019-03-09
      • 2020-01-28
      • 1970-01-01
      • 1970-01-01
      • 2019-09-15
      相关资源
      最近更新 更多