DropDownList InCell editing.

2 posts, 0 answers
  1. Anthony
    Anthony avatar
    1 posts
    Member since:
    Aug 2016

    Posted 06 Jun Link to this post

    Hi,

    I have this error Uncaught ReferenceError: TypeMontant is not defined When i tried to display the editor Inline.

    When clicking on Add new record, for the field TypeMontant, it's suppose to display a dropDownList, but this error appear.

    I followd this tutorial : http://demos.telerik.com/aspnet-mvc/grid/editing-custom to achieved that

     

    Here the view

    @using EDC.NAVComptable.WebUi.Infrastructure.Configuration
    @using EDC.NAVComptable.WebUi.Ressources
    @using Kendo.Mvc.UI
    @(Html.Kendo().Grid<EDC.NAVComptable.WebUi.ViewModel.Core.PosteComptableTypeMontantViewModel>()
            .Name("grid")
            .Columns(columns =>
            {
                columns.Bound(e => e.PosteComptbCd).Width(110).Title(Layouts.PosteComptable).Filterable(filterable => filterable.UI("typeMontant").Multi(true));
                columns.Bound(e => e.TypeMontant).Width(110).Title(Layouts.TypeMontant).ClientTemplate("#=TypeMontant.RefrncCibleCd#");
                columns.Bound(e => e.DtDebutVersion).Width(110).Title(Layouts.DtDebutVersion).ClientTemplate("#= (DtDebutVersion == null) ? '' : kendo.toString(DtDebutVersion, 'yyyy-MM-dd') #");
                columns.Bound(e => e.DtFinVersion).Width(110).Title(Layouts.DtFinVersion).ClientTemplate("#= (DtFinVersion == null) ? '' : kendo.toString(DtFinVersion, 'yyyy-MM-dd') #");
                columns.Bound(e => e.DtsSupprm).Width(110).Title(Layouts.DtsSupprm).ClientTemplate("#= (DtsSupprm == null) ? '' : kendo.toString(DtsSupprm, 'yyyy-MM-dd') #");
                columns.Bound(e => e.IndVersionCournt).Width(110).Title(Layouts.IndVersionCournt);
                columns.Bound(e => e.LoadDts).Width(110).Title(Layouts.LoadDts).ClientTemplate("#= (LoadDts == null) ? '' : kendo.toString(LoadDts, 'yyyy-MM-dd') #");
                columns.Command(command => command.Destroy()).Title("Supprimer").Width(150);
            })
            .ToolBar(toolbar =>
            {
                toolbar.Save().SaveText("Sauvegarde").CancelText("Annuler");
                toolbar.Excel();
                toolbar.Create();
            })
            .Excel(excel => excel.FileName("PosteComptableTypeMontant.xlsx"))
            .Editable(editable => editable.Mode(GridEditMode.InCell))
            .Groupable()
            .Sortable()
            .Pageable()
            .Scrollable()
            .Filterable(filterable => filterable
            .Extra(false)
            .Operators(operators => operators
                .ForString(str => str.Clear()
                    .StartsWith("Starts with")
                    .IsEqualTo("Is equal to")
                    .IsNotEqualTo("Is not equal to")
                ))
            )
            .HtmlAttributes(new { style = "height:600px;" })
            .DataSource(dataSource => dataSource
                .Ajax()
                .PageSize(WebConfigFile.PageSizeList)
                .Model(
                    model =>
                    {
                        model.Id(p => p.PosteComptbTypeMontantSqn);
                        model.Field(p => p.PosteComptbTypeMontantSqn).Editable(false);
                        model.Field(p => p.TypeMontant).DefaultValue(ViewData["TypeMontant"] as EDC.NAVComptable.WebUi.ViewModel.Core.TypeMontantViewModel);
                        model.Field(p => p.PosteComptbCd).DefaultValue(ViewData["PosteComptbCd"] as EDC.NAVComptable.Model.Core.PosteComptable);
                    }
                )

                .Read(read => read.Action("PosteComptableTypeMontant", "Reference"))
                .Update("Editing_Update", "Grid")
                .Create(update => update.Action("EditingPopup_Create", "Reference"))
            )
    )

     

    here the Controller

     public ActionResult Index()
            {
                var dateComptable = _dateCalendrierRepository.GetdateComptable();
                InitDropDown();
                return View(new DateCalendrierViewModel {DtCalndr = dateComptable.DtCalndr});
            }

            public ActionResult TypeMontantDistinct()
            {
                return Json(_typeMontantRepository.GetDistinct().Select(e=>e.RefrncCibleCd), JsonRequestBehavior.AllowGet);
            }

            [AcceptVerbs(HttpVerbs.Post)]
            public ActionResult EditingPopup_Create([DataSourceRequest] DataSourceRequest request, PosteComptableTypeMontant model)
            {
                if (model != null && ModelState.IsValid)
                {
                    _referenceRepository.Save(model);
                }

                return Json(new[] { model }.ToDataSourceResult(request, ModelState));
            }

            [AcceptVerbs(HttpVerbs.Post)]
            public ActionResult PosteComptableTypeMontant([DataSourceRequest] DataSourceRequest request)
            {
                var posteComptableTypeMontant = _referenceRepository.GetAll().Select( x=> new PosteComptableTypeMontantViewModel
                {
                    TypeMontant = new TypeMontantViewModel { RefrncCibleCd = x.TypeMontant},
                    PosteComptbCd = x.PosteComptbCd,
                    DtDebutVersion = x.DtDebutVersion,
                    PosteComptbTypeMontantSqn = x.PosteComptbTypeMontantSqn,
                    DtFinVersion = x.DtFinVersion,
                    DtsSupprm = x.DtsSupprm,
                    LoadCycleId = x.LoadCycleId,
                    IndVersionCournt = x.IndVersionCournt,
                    LoadDts = x.LoadDts
                }).ToList();

                var nouveauPosteComptable = _posteComptableRepository.GetNew().Select(x => new PosteComptableTypeMontantViewModel
                {
                    PosteComptbCd = x.PosteComptbCd,
                }).ToList();

                foreach (var posteComptable in nouveauPosteComptable)
                {
                    posteComptableTypeMontant.Add(new PosteComptableTypeMontantViewModel
                    {
                        PosteComptbCd = posteComptable.PosteComptbCd,
                    });
                }

                return Json(posteComptableTypeMontant.OrderBy(x => x.TypeMontant.RefrncCibleCd).ToDataSourceResult(request));
            }

            private void InitDropDown()
            {
                var typeMontant = _typeMontantRepository.GetDistinct()
                    .Select(element => new TypeMontantViewModel{ RefrncCibleCd= element.RefrncCibleCd})
                    .ToList();

                //var posteComptable = _posteComptableRepository.GetDistinct()
                //    .Select(element => new PosteComptable { PosteComptbCd = element.PosteComptbCd })
                //    .ToList();

                //ViewData["PosteComptbCd"] = posteComptable;
                //ViewData["DefaultPosteComptbCd"] = posteComptable.First();
                ViewData["TypeMontant"] = typeMontant;
                ViewData["DefaultTypeMontant"] = typeMontant.First();

            }

     

    Here the model

    public class PosteComptableTypeMontantViewModel
        {
            public PosteComptableTypeMontantViewModel()
            {
                TypeMontant = new TypeMontantViewModel();    
            }

            public int PosteComptbTypeMontantSqn { get; set; }
            public string PosteComptbCd { get; set; }
            public TypeMontantViewModel TypeMontant { get; set; }

            [UIHint("Date")]
            public DateTime DtDebutVersion { get; set; }
            [UIHint("Date")]
            public DateTime? DtFinVersion { get; set; }
            [UIHint("Date")]
            public DateTime? DtsSupprm { get; set; }
            public bool IndVersionCournt { get; set; }
            [UIHint("Date")]
            public DateTime LoadDts { get; set; }
            public int LoadCycleId { get; set; }
        }

    public class TypeMontantViewModel
        {
            public string RefrncCibleCd { get; set; }
        }

     

    Thank for your help

    Anthony

  2. Konstantin Dikov
    Admin
    Konstantin Dikov avatar
    2124 posts

    Posted 08 Jun Link to this post

    Hello Anthony,

    I see that you are setting a collection as DefaultValue for the TypeMontant field in the model of the DataSource. Could you please try to set the DefaultTypeMontant instead and see if the issue will persist:
    model.Field(p => p.TypeMontant).DefaultValue(ViewData["DefaultTypeMontant"] as EDC.NAVComptable.WebUi.ViewModel.Core.TypeMontantViewModel);

    Hope this helps.


    Regards,
    Konstantin Dikov
    Progress Telerik
    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