本文将一步一步第教您如何创建一个自定义约会编辑表单,并且该表单中包含了编辑自定义字段所需的控件。
第1步:为非标准的约会字段添加自定义字段映射,非标准的约会字段的数据源中有“Amount”和“Memo”名称。
[C#]
Storage.Appointments.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("Field1","Amount"));
Storage.Appointments.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("Field2","Memo"));
[VB.NET]
Storage.Appointments.CustomFieldMappings.Add(New ASPxAppointmentCustomFieldMapping("Field1","Amount"))
Storage.Appointments.CustomFieldMappings.Add(New ASPxAppointmentCustomFieldMapping("Field2","Memo"))
第2步:复制~DevExpress\ASPxSchedulerForms\AppointmentForm.ascx和AppointmentForm.ascx.cs到MyForms文件夹
将它们重命名为UserAppointmentForm。
第3步:将AppointmentFormTemplateUrl的属性更改为指向该表单模板新位置的值——~/MyForms/UserAppointmentForm.ascx。
第4步:将UserAppointmentForm页面开始处的“不要修改(DO NOT MODIFY)...”警告删除。
第5步:根据需要将新控件添加到该表单。就我们而言,需要添加的新控件为ASPxTextBox控件(ID设置为tbField1)和ASPxMemo控件(ID设置为memField2)。
第6步:添加一个新的类定义文件到App_Data文件夹。将其命名为“UserAppointmentFormClass.cs”。
第7步:在该文件中定义一个公共类——从DevExpress.Web.ASPxScheduler.AppointmentFormTemplateContainerAppointmentFormTemplateContainer类继承的UserAppointmentFormTemplateContainer。它将提供来自自定义字段的数据,显示在页面上。您可根据实际需要对数据进行调整,使数据显示适当。
第8步:处理AppointmentFormShowing事件,将您的自定义表单指定为目标容器(而非默认容器)。
[C#]
protected void ASPxScheduler1_AppointmentFormShowing(object sender, AppointmentFormEventArgs e) {
e.Container = new UserAppointmentFormTemplateContainer((ASPxScheduler)sender);
}
[VB.NET]
Protected Sub ASPxScheduler1_AppointmentFormShowing(ByVal sender As Object, ByVal e As AppointmentFormEventArgs)
e.Container = New UserAppointmentFormTemplateContainer(CType(sender, ASPxScheduler))
过程执行结束
第9步:定义一个公共类——从AppointmentFormController类继承的UserAppointmentFormController。它重写了以下方法: IsAppointmentChanged(用来检查需要修改的约会)和ApplyCustomFieldsValues(将已编辑约会的副本的自定义字段值应用到源约会)。
第10步:定义一个公共类——从AppointmentFormSaveCallbackCommand类继承的UserAppointmentSaveCallbackCommand。为从绑定控件中得到新的自定义字段值,您需要重写AssignControllerValues方法。重写CreateAppointmentFormController方法,则将返回一个UserAppointmentFormController实例。
第11步:更改表单HTML代码中的数据绑定,让数据绑定指向UserAppointmentFormTemplateContainer。要做到这一点,需要找出.ascx页HTML代码中数据源属性的内嵌表达式。将AppointmentFormTemplateContaine转换替换为UserAppointmentFormTemplateContainer转换。
第12步:别忘了为新添加的用于显示自定义字段的控件指定数据绑定。
[ASPx]
<dxe:ASPxTextBox ID="tbField1" runat="server" Width="75px" Text='<%#((UserAppointmentFormTemplateContainer)Container).Field1 %>'>
</dxe:ASPxTextBox>
<dxe:ASPxMemo ID="memField2" runat="server" Height="71px" Width="170px" Text='<%#((UserAppointmentFormTemplateContainer)Container).Field2 %>'>
</dxe:ASPxMemo>
第13步:处理BeforeExecuteCallBackCommand事件,以使用您自己的UserAppointmentSaveCallbackCommand类实例,而不是默认命令。
第14步:运行该项目。当打开约会时检查自定表单是否显示出来。填写自定义字段,检查当点击OK时新的值能否保存,能否在下一个打开的表单上恢复。
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果
转载请注明:文章转载自:DevExpress控件中文网 [https://www.devexpresscn.com/]
本文地址:https://www.devexpresscn.com/post/305.html