我正在尝试在 asp.net 动态数据站点中显示“软件版本”表。Release 表的内部版本号存储为三个 int 字段(Major、Minor、Build)。我正在使用 EntityFramework,所以我有一个绑定到我的数据库模式的 EF 模型。在我的动态数据站点中,我希望版本号在显示 Release 对象的任何位置(特别是当它在相关对象的页面上显示为外键时)都显示为单个字段 (Major.Minor.Build)。由于这个“计算列”不是我数据库中的一个字段,因此似乎没有办法让动态数据识别或显示它。我可以向 Release 对象添加一个属性(因为它是由 EF 生成的部分类),但 Dynamic-Data 无法识别它,因为它不是“列”。我想将 Release 编辑为三个单独的字段(主要、次要、构建),但是当它显示时,我希望它显示为单个字段。DynamicData 框架似乎不支持复合字段,如果它们不在 EF 模型中,它将不会显示/绑定到对象上的属性。如何使格式化的版本号属性成为默认显示值?
Christopher
问问题
2143 次
2 回答
4
您可以像在进行任何动态数据 ui 自定义时一样添加元数据类。然后在元数据中创建一个 UIHint 来告诉动态数据为您的自定义对象使用什么控件。例如
[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;
}
于 2009-09-05T08:11:19.000 回答
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
于 2009-02-18T03:44:25.787 回答