2024年终活动

DevExpress控件使用交流,DevExpress中国社区Dev联系电话 联系电话:023-68661681

如何利用DevExpress ASPxSchedulerForms创建一个自定义约会编辑表单?

来源:本站原创   发布时间:2012-08-22   浏览:2779次

本文将一步一步第教您如何创建一个自定义约会编辑表单,并且该表单中包含了编辑自定义字段所需的控件。

第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
扫码咨询
电话咨询
023-68661681
返回
顶部