自动为动态数据应用程序中的新记录设置属性值

时间:2010-08-21 16:44:32

标签: asp.net dynamic-data

我有一个SalesOrderItem表,它有一个UnitPrice列,以防销售人员希望覆盖该订单商品的产品单价。

在ASP.NET动态数据应用程序中,根据产品的标准UnitPrice在新的SalesOrderItem上设置UnitPrice属性的最佳方法是什么?换句话说,当用户在销售订单的“项目”屏幕上单击“新建”时,UnitPrice字段应该已经填入产品的正常单价。

1 个答案:

答案 0 :(得分:0)

如果 UnitPrice 默认值是常量,那么就像在 UnitPrice 元数据列上设置DefaultValueAttribute一样简单。由于默认值必须在运行时计算,我们必须采用不同的方法。

从问题产品记录的位置不清楚。假设在最初呈现“插入”页面时它在服务器上可用,您可以create a field template获取 UnitPrice 列。为了举例,我们还假设 UnitPrice 的列类型是 decimal

找到字段模板文件夹(默认情况下位于“〜/ DynamicData / FieldTemplates”中)。使用Decimal_Edit.ascx *文件作为指南,创建一组新的字段模板文件,标记为“UnitPrice_Insert.ascx”,“UnitPrice_Insert.ascx.cs”和“UnitPrice_Insert.ascx.designer.cs”。使用代码隐藏文件来计算和设置默认值:

protected void Page_Init(object sender, EventArgs e) {
    decimal defaultUnitPrice;
    // Calculate and set the defaultUnitPrice here.
    // "this.Page" might be useful for locating the Product record.
    FieldValue = defaultUnitPrice;
}

最后,注释 UnitPrice 列的元数据以使用刚刚创建的模板:

[UIHint("UnitPrice")]

现在,插入屏幕将使用“UnitPrice_Insert.ascx”,从而显示计算的默认值,而列表,详细信息和编辑屏幕仍将使用“Decimal.ascx”和“Decimal_Edit.ascx”模板,实际的列值,而不是默认值。