[英]Combine data from multiple sources, display in ASP.Net GridView
我正在为我们的一个应用程序编写一个货币转换模块。 我有一个产品清单,一个我们希望看到其价格的货币清单以及一个货币汇率清单。 我希望用户能够从他们在GridView中看到的列表中选择哪种货币。
我还希望能够修改货币列表并添加新货币,而不必对此模块进行其他更改。 因此,我的GridView显示必须是动态的 。
从本质上讲,我打算结束具有以下各列的GridView:
零件编号-说明-美元价格-澳元价格-英镑价格
美元价格将是固定的,因为它是我们的基础货币,澳元和英镑是用户选择的,并且可能列出的货币数量可能是任意的。
我通常会使用DataSet和DataTables来完成这项工作,但是我敢肯定,使用System.Collections.Generics可以采用一种“更好”的方法。
现在,我已经拥有List集合中所需的所有数据,但是似乎没有一种方法可以定义这些集合之间的相互关系,或者将这些集合组合为一个集合,以便可以将其绑定到GridView。
我是否应该考虑使用List以外的其他方法来实现此目的,还是需要回到DataSet和DataTables的原始方法。
谢谢!
******更新/某些代码******
好的,有人要求提供一些代码,因此,我将进一步解释到目前为止的设置。
产品和货币列表-这些来自LINQ的SQL数据库,因此它们可以是System.Collections.Generics对象中的任何一个,例如List,IEnumerable等。
货币汇率-这些是我从欧洲银行的公共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.