insert is called twice update and delete methods are bound to Post in telerik aspnet-core scheduler UI?

2 posts, 0 answers
  1. Abdalla
    Abdalla avatar
    8 posts
    Member since:
    May 2017

    Posted 11 May Link to this post

    I am using Telerik UI Scheduler for asp.net core Project.I am using WebApi to bind data and insert new meeting to the room but I have 2 problems are:

     1. insert is called twice when I insert new Item. 
     2. update and delete methods are bound to Post and they are not calling corresponded  do delete of add operation.

    html view
     
        @(Html.Kendo().Scheduler<Meeting>().Name("scheduler").Date(new DateTime(2017, 5, 13))
              .StartTime(new DateTime(2017, 5,13, 7, 00, 00))
              .Editable(true)
              .Views(views=>{
                  views.DayView();
                  views.AgendaView();
              })
              .Height(600)
              .Timezone("Etc/UTC")
              .Group(group => { group.Resources("Rooms"); group.Date(true); })
              .Resources(resource =>
              {
                  resource.Add(m => m.RoomId).Title("Room").Name("Rooms").DataTextField("Text").DataValueField("Value").DataColorField("Color").BindTo(new[] {
                      new { Text = "Meeting Room 101", Value = 1, Color = "#6eb3fa" },
                      new { Text = "Meeting Room 201", Value = 2, Color = "#f58a8a" }
                  });
                  resource.Add(m => m.Attendees)
                      .Title("Attendees")
                      .Multiple(true)
                      .DataTextField("Text")
                      .DataValueField("Value")
                      .DataColorField("Color")
                      .BindTo(new[] {
                          new { Text = "Alex", Value = 1, Color = "#f8a398" } ,
                          new { Text = "Bob", Value = 2, Color = "#51a0ed" } ,
                          new { Text = "Charlie", Value = 3, Color = "#56ca85" }
                      });
              }).DataSource(d => d
                  .WebApi()
                  .Model(m =>
                  {
                      m.Id(f => f.RecordId);
                      m.Field(f => f.Title).DefaultValue("No title");
                      m.Field(f => f.Title).DefaultValue("No title");
                  })
                  .Events(events => events.Error("error_handler"))
                  .Read(read => read.Action("Get", "Meeting"))
                  .Create(create => create.Action("Post", "Meeting"))
                 .Update(update => update.Action("Put", "Meeting", new { id = "{0}" }))
                 .Destroy(destroy => destroy.Action("Delete", "Meeting", new { id = "{0}" }))
                  ).Deferred())
         
            @* All initialization scripts are rendered to the bottom of the page, see _Layout.cshtml *@
            @section scripts {
                @Html.Kendo().DeferredScripts()
            }
            <script>
        function error_handler(e) {
            var errors = $.parseJSON(e.xhr.responseText);
         
            if (errors) {
                alert("Errors:\n" + errors.join("\n"));
            }
        }
            </script>
     
    meeting Web api controller
      
     
         [Route("api/[controller]")]
            public class MeetingController : Controller
            {
                private IMeetingData meetingData;
         
                public MeetingController(IMeetingData meetingData)
                {
                    this.meetingData = meetingData;
                }
         
                // GET api/task
                [HttpGet]
                public DataSourceResult Get([DataSourceRequest]DataSourceRequest request)
                {
                    return meetingData.GetAll().ToDataSourceResult(request);
                }
         
                // POST api/Meeting
                [HttpPost]
                public IActionResult Post(Meeting m)
                {
                    if (!ModelState.IsValid)
                    {
                        return BadRequest(ModelState.Values.SelectMany(v => v.Errors).Select(error => error.ErrorMessage));
                    }
         
                    meetingData.Insert(m, null);
         
                    return new ObjectResult(new DataSourceResult { Data = new[] { m }, Total = 1 });
                }
         
                // PUT api/Meeting/5
                [HttpPut("{id}")]
                public IActionResult Put(int id, Meeting m)
                {
                    if (ModelState.IsValid && id ==  m.RecordId)
                    {
                        try
                        {
                            meetingData.Update(m, null);
                        }
                        catch (Exception)
                        {
                            return new NotFoundResult();
                        }
         
                        return new StatusCodeResult(200);
                    }
                    else
                    {
                        return BadRequest(ModelState.Values.SelectMany(v => v.Errors).Select(error => error.ErrorMessage));
                    }
                }
         
                // DELETE api/Meeting/5
                [HttpDelete("{id}")]
                public IActionResult Delete(int id)
                {
                    try
                    {
                        meetingData.Delete(new Meeting { RecordId = id }, null);
                    }
                    catch (Exception)
                    {
                        return new NotFoundResult();
                    }
         
                    return new StatusCodeResult(200);
                }
            }
        }
  2. Plamen
    Admin
    Plamen avatar
    2812 posts

    Posted 16 May Link to this post

    Hi,

    I have tested the scenario that you described on our online demos and locally but could not replicate a similar behavior. Would you please elaborate a little bit how is your scenario different than it so we could be more helpful? Sending a sample isolated project may be helpful too.

    Regards,
    Plamen
    Telerik by Progress
    Try our brand new, jQuery-free Angular 2 components built from ground-up which deliver the business app essential building blocks - a grid component, data visualization (charts) and form elements.
Back to Top