【问题标题】:One gridview - two datasources?一个gridview - 两个数据源?
【发布时间】:2010-09-20 05:32:01
【问题描述】:

我在一个同事网站上工作,他错误地放置了一个显示 TypeID 而不是 TypeName 的网格视图。我想输入该类型的实际名称,而不是任意 ID 号,就像他拥有它一样。我看到他在页面上有两个“ObjectDataSource”——一个用于 Type,一个用于 Item。 Items 包含该项目是什么 TYPE 的 ID,它都在 Items 数据源中。他正在拉这个 ID 来填充 gridview。我想使用该 ID 从其他数据源中提取名称,并将该名称放入该特定列的网格视图中。这可以做到吗?我可以在 gridview 上使用两个不同的数据源吗?

【问题讨论】:

    标签: asp.net gridview datasource


    【解决方案1】:

    如果我的理解是正确的,那么您所拥有的是两个执行此操作的数据源:

    1) SELECT ID, Item, ItemTypeID FROM Item
    2) SELECT ID, ItemType FROM ItemTypes 
    

    您希望项目名称和项目类型显示在您的网格中。

    如果您可以在网格上使用这两种来源,请回答您的基本问题:是的。但这不是执行操作的最有效方式,因为您需要为第一行中的每一行遍历第二个数据源。

    更好的方法是将两个数据源连接在一起,并且只有一个。

    将第一个数据源的 SELECT 语句修改为以下几行:

    SELECT i.ID, i.Item, t.ItemType FROM Item i INNER JOIN ItemTypes t ON i.ItemTypeId = t.ID;
    

    【讨论】:

    • 谢谢 - 我自己想通了。 (好吧,我猜是在学习)我刚刚制作了一个从两个表中提取的新 ObjectDataSource。当我修改现有的 SQL 时,我遇到了一些我不明白的错误。创建一个新的数据源解决了我的问题,但你让我走上了正确的道路:)
    • 哦,我知道我遇到的错误 - 似乎由于某种原因使用 INNER JOIN 时它无法自动创建 INSERT 语句。由于这个 INSERT 语句在别处被引用,它被轰炸了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多