ASPxScheduler 自訂 InplaceEditor

來源:互聯網
上載者:User

如果沒有自訂的欄位,只是布局改變,則比較簡單

 

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);
    }
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.