我正在尝试在asp.net动态数据站点中显示“软件版本”表。 Release表的内部版本号存储为三个int字段(Major,Minor,Build)。我正在使用EntityFramework,所以我有一个绑定到我的数据库模式的EF模型。在我的动态数据站点中,我希望构建号显示为单个字段(Major.Minor.Build),无论何处显示Release对象(特别是当它在相关对象的页面上显示为外键时)。由于此“计算列”不是我的数据库中的字段,因此似乎无法使动态数据识别或显示它。我可以向Release对象添加一个属性(因为它是由EF生成的部分类),但Dynamic-Data将无法识别它,因为它不是“列”。我想将Release编辑为三个单独的字段(主要,次要,构建),但是当它显示时,我希望它显示为单个字段。 DynamicData框架似乎不支持复合字段,如果它们不在EF模型中,它将不会显示/绑定到对象上的属性。如何将格式化版本号属性设置为默认显示值?
答案 0 :(得分:4)
您可以像执行任何动态数据ui自定义一样添加元数据类。 然后在元数据中创建UIHint,以告知动态数据用于自定义对象的控件。 E.G。
[MetadataType(typeof(EMetadata))]
public partial class E{
public string RefNR {
get {
return "E" + this.EntryID.ToString().PadLeft(5, '0');
}
}
}
public partial class EMetadata {
[UIHint("Text")]
public object RefNR;
}
答案 1 :(得分:3)
我不确定您是否绑定到从数据库返回的DataTable / DataSet,或者您是否绑定到Release对象本身。也不是哪种控制。
如果您绑定到DataSet / DataTable,只需更改SQL以将版本作为一个字段返回:
SELECT table1.Major + '.' + table1.Minor + '.' + table1.Build AS Version ....
但是,如果你绑定一个对象,比如一个DropDownList,我想如果你重写ToString方法,它将成为DropDownList中的Display值:
Public Overrides Function ToString() As String
Return _major.ToString & '.' & _minor.ToString & '.' & _build.ToString
End Sub