如果没有自定义的字段,只是布局改变,则比较简单
1.复制 InplaceEditor.ascx 重命名为 InplaceEditorTimeTracking.ascx
2、修改 InplaceEditorTimeTracking.ascx 的布局,可以添加控件
<dxrp:ASPxRoundPanel ID="ASPxRoundPanelTitle" runat="server" Width="100%" SkinID="PlasticBlue"
HeaderText="Hour used">
<PanelCollection>
<dxp:PanelContent runat="server">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td >
<dxe:ASPxTextBox ID="Subject" runat="server" Width="100%" Text='<%# ((AppointmentInplaceEditorTemplateContainer)Container.Parent.Parent).Appointment.Subject %>'>
</dxe:ASPxTextBox>
</td>
<td width="25">
<cc1:NoBorderButton runat="server" ClientInstanceName="_dx" ID="btnSave" Width="19px"
Height="19px" ToolTip="Save" ImageUrl='<%#Page.ClientScript.GetWebResourceUrl(typeof(ASPxScheduler), "Images.InplaceEditor.Save.png") %>'
Image-IsResourcePng="True">
<Image Height="19px" Width="19px" />
</cc1:NoBorderButton>
</td>
<td width="25">
<cc1:NoBorderButton runat="server" ClientInstanceName="_dx" ID="btnCancel" Width="19px"
Height="19px" ToolTip="Cancel" ImageUrl='<%#Page.ClientScript.GetWebResourceUrl(typeof(ASPxScheduler), "Images.InplaceEditor.Cancel.png") %>'
CausesValidation="False" Image-IsResourcePng="True">
<Image Height="19px" Width="19px" />
</cc1:NoBorderButton>
</td>
</tr>
</table>
</dxp:PanelContent>
</PanelCollection>
</dxrp:ASPxRoundPanel>
3、修改后台代码 InplaceEditorTimeTracking.ascx.cs
namespace Diebold.ProjectTracking.Web.Controls.ASPxSchedulerForms
{
public partial class InplaceEditorTimeTracking : InplaceEditorBaseFormControl
{
protected void Page_Load(object sender, EventArgs e)
{
//PrepareChildControls();
Subject.Focus();
}
public override void DataBind()
{
base.DataBind();
AppointmentInplaceEditorTemplateContainer container = (AppointmentInplaceEditorTemplateContainer)Parent;
btnSave.ClientSideEvents.Click = container.SaveHandler;
btnCancel.ClientSideEvents.Click = container.CancelHandler;
}
protected override ASPxEditBase[] GetChildEditors()
{
ASPxEditBase[] edits = new ASPxEditBase[] { Subject };
return edits;
}
protected override ASPxButton[] GetChildButtons()
{
ASPxButton[] buttons = new ASPxButton[] {
btnSave, btnCancel
};
return buttons;
}
}
}
4、新建类 InplaceEditorSaveCallbackCommandTimeTracking.cs
namespace Diebold.ProjectTracking.Web.Controls.ASPxSchedulerForms
{
public class InplaceEditorSaveCallbackCommandTimeTracking : AppointmentInplaceEditorSaveCallbackCommand
{
public InplaceEditorSaveCallbackCommandTimeTracking(ASPxScheduler control)
: base(control)
{
}
protected override void AssignControllerValues()
{
ASPxRoundPanel panel = (ASPxRoundPanel)FindControlByID("ASPxRoundPanelTitle");
Controller.Subject = ((ASPxTextBox)panel.FindControl("Subject")).Text;
base.AssignControllerValues();
}
}
}
5、为ASPxScheduler控件添加事件处理函数 OnBeforeExecuteCallbackCommand
<dxwschs:ASPxScheduler ID="ASPxSchedulerActivity" runat="server" Width="100%" SkinID=""
ActiveViewType="Week" ClientInstanceName="ASPxSchedulerActivityClient" GroupType="Date"
OnBeforeExecuteCallbackCommand="ASPxSchedulerActivity_OnBeforeExecuteCallbackCommand"
protected void ASPxSchedulerActivity_OnBeforeExecuteCallbackCommand(object sender, SchedulerCallbackCommandEventArgs e)
{
if (e.CommandId == SchedulerCallbackCommandId.InplaceEditorSave)
{
e.Command = new InplaceEditorSaveCallbackCommandTimeTracking((ASPxScheduler)sender);
}
}