繁体   English   中英

合并来自多个来源的数据,在ASP.Net GridView中显示

[英]Combine data from multiple sources, display in ASP.Net GridView

我正在为我们的一个应用程序编写一个货币转换模块。 我有一个产品清单,一个我们希望看到其价格的货币清单以及一个货币汇率清单。 我希望用户能够从他们在GridView中看到的列表中选择哪种货币。

我还希望能够修改货币列表并添加新货币,而不必对此模块进行其他更改。 因此,我的GridView显示必须是动态的

从本质上讲,我打算结束具有以下各列的GridView:

零件编号-说明-美元价格-澳元价格-英镑价格

美元价格将是固定的,因为它是我们的基础货币,澳元和英镑是用户选择的,并且可能列出的货币数量可能是任意的。

我通常会使用DataSet和DataTables来完成这项工作,但是我敢肯定,使用System.Collections.Generics可以采用一种“更好”的方法。

现在,我已经拥有List集合中所需的所有数据,但是似乎没有一种方法可以定义这些集合之间的相互关系,或者将这些集合组合为一个集合,以便可以将其绑定到GridView。

我是否应该考虑使用List以外的其他方法来实现此目的,还是需要回到DataSet和DataTables的原始方法。

谢谢!

******更新/某些代码******

好的,有人要求提供一些代码,因此,我将进一步解释到目前为止的设置。

  1. 产品和货币列表-这些来自LINQ的SQL数据库,因此它们可以是System.Collections.Generics对象中的任何一个,例如List,IEnumerable等。

  2. 货币汇率-这些是我从欧洲银行的公共XML文件中提取的。 我下载了文件,从中删除了我需要的数据,当前将其存储为List对象。

也可以将货币汇率存储在数据库表中,但是随后我必须要进行某种后台处理,并每天更新汇率。 这样,仅当有人访问报告功能时(仅偶尔发生),费率才会更新。 因此,我宁愿“按需”获取最新价格。

我知道我最终需要做的是一些具有以下结构的对象:

部件号-描述-基本价格-货币价格1,货币价格2,货币价格3

货币价格数量未定义的地方 ,因为它基于用户希望报告显示的货币。

这是我一直在努力的未定义部分,从本质上讲,我如何才能创建结构化对象,直到运行时我才知道其完整结构?

希望这更有道理/有帮助!

只是在这里大声思考,但是如果您将“国外”价格存储在Dictionary或类似的数据结构中,例如:

class Product {
    public String PartNo { get; set; }
    public String Description { get; set; }
    public Decimal BasePrice { get; set; }
    public Dictionary<String, Decimal> ForeignPrices;
}

然后,您可以编写一个简单的例程,该例程将收集上述对象并将其转换为可以绑定到的DataTable。 所述例程将始终创建以下列:

PartNo, Description, BasePrice

然后,它将遍历字典中的项目,为每个项目添加其他列。 因此,如果您在ForeignPrices中有三个项目:

ForeignPrices.Items.Add("AUD", 10.50);
ForeignPrices.Items.Add("GBP", 6.20);
ForeignPrices.Items.Add("CAD", 5.95);

您最终将在动态创建的DataTable上添加三列:

PartNo, Description, BasePrice, AUD, GBP, CAD

当然,您可能想取消BasePrice属性,而只是在ForeignPrices中使“ USD”成为另一个项目(在这种情况下,简称为Price)。

HTH。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM