我有一个SalesOrderItem表,它有一个UnitPrice列,以防销售人员希望覆盖该订单商品的产品单价。
在ASP.NET动态数据应用程序中,根据产品的标准UnitPrice在新的SalesOrderItem上设置UnitPrice属性的最佳方法是什么?换句话说,当用户在销售订单的“项目”屏幕上单击“新建”时,UnitPrice字段应该已经填入产品的正常单价。
答案 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”模板,实际的列值,而不是默认值。