JavaScript

Inline editing activated on event click:

<div id="dp"></div>
<script type="text/javascript">
  var dp = new DayPilot.Scheduler("dp");
  dp.eventClickHandling = "Edit";
  dp.onEventEdited = function(args) {
    dp.message("Event text changed to " + args.newText);
  };
  // ...
  dp.init();
</script>

"Create-and-edit" feature:

dp.onTimeRangeSelected = function(args) {
    var e = new DayPilot.Event({
        start: args.start,
        end: args.end,
        id: DayPilot.guid(),
        resource: args.resource,
        text: "",
        tags: {justCreated: true}
    });
    dp.events.add(e);
    dp.clearSelection();
    dp.events.edit(e);
};

dp.onEventEdit = function(args) {
    if (args.e.tag("justCreated")) {
        if (args.canceled || args.newText === "") {
            dp.events.remove(args.e);
        }
        args.e.data.tags.justCreated = false;
    }
};

Note that args.canceled is available in onEventEdit and onEventEdited since version 8.1.1914.

See also:

Demo:

ASP.NET WebForms

Client side

<DayPilot:DayPilotScheduler runat="server" id="DayPilotScheduler1"
  ...
  EventClickHandling="Edit"
  EventEditHandling="CallBack"
  OnEventEdit="DayPilotScheduler1_EventEdit"
/>

Server side

protected void DayPilotScheduler1_EventEdit(object sender, DayPilot.Web.Ui.Events.EventEditEventArgs e)
{
  UpdateEventText(e.Id, e.NewTest);  // your method
  DayPilotScheduler1.DataSource = LoadData();  // your method
  DayPilotScheduler1.DataBind();
  DayPilotScheduler1.Update();
}

ASP.NET MVC

Client side:

@Html.DayPilotScheduler("dps", new DayPilotSchedulerConfig {
  BackendUrl = ResolveUrl("~/Scheduler/Backend"),
  ...
  EventClickHandling = EventClickHandlingType.Edit,
EventEditHandling = EventEditHandlingType.CallBack })

Server side:

protected override void OnEventEdit(EventEditArgs e)
{
  new EventManager(Controller).UpdateText(e.Id, e.NewText);
  UpdateWithMessage("Event updated.");
}