假设您有以下相关表格(Stores -> Categories -> Products
)
我想创建一个网格来编辑Products
。 RIA服务很简单。但是,如果我还希望在StoreName
列表中显示来自Stores
的{{1}}和来自CategoryName
的{{1}},该怎么办?两个额外的列应该只读。
如何实施?
更新:我正在尝试以最简单的形式执行此操作。这不是ViewModel,只有拖放,代码(如果有的话)将进入代码隐藏。我正在使用Ling2Sql并返回GetProducts查询的默认实现。
此致
Larsi
答案 0 :(得分:0)
你是如何设置的?您是绑定到ViewModel还是仅使用后面的代码? Web服务是否发回Product LINQ对象的列表,或者您正在做其他事情吗?
有多种选择,但这实际上取决于你要做的事情。
答案 1 :(得分:0)
最简单的方法是为产品添加元数据文件注释,让网格为您生成列。
例如,您的表可能看起来像这样:
Product
int Id;
string ProductName;
int CategoryId;
Category
int Id;
string CategoryName;
int StoreId;
Store
int Id;
string StoreName;
现在,在创建服务时,您可以包含域模型中的3个表/实体,并让它为您生成元数据文件。在该文件中,正确地注释对象:
internal sealed class ProductMetadata
{
[Key]
[Bindable(false)]
[Display(AutogenerateField=false)]
public int Id { get; set; }
[Bindable(true, BindingDirection.TwoWay)]
[Display(Name="Product")]
[StringLength(20, MinimumLength=3)]
public string ProductName { get; set; }
[Bindable(false)]
[Display(AuteogenerateField=false)]
public Category Category { get; set; }
[Required]
[Bindable(false)]
[Display(AutogenerateField=false)]
public CategoryId { get; set; }
}
您可以对其他对象的元数据执行相同的操作。
您可能需要做的另一件事是在网格中添加另外两列,并将它们映射到Product.Category.CategoryName和Product.Category.Store.StoreName