Telerik Forums
UI for ASP.NET MVC Forum
1 answer
219 views
I have a treeview that is being used to display active and inactive data. By default the tree only shows active parents and their children but I have a check box on form that I am am wanting to use to force the update of the tree view with the reflected JSON data. I have verified that the JSON is updating the results buy reviewing my FIDDLER trace but for some reason the grid is not updating to reflect the change. I have search throughout the forum as well as the internet and can't seem to find an example close to what I am attempting to do. Any help would be appreciated. 

I have included a sample of my code below:

getHierarchy()
{
testHierarchy = getData();
 $("#TestHierarchy").kendoTreeView({
                        dataSource: new kendo.data.HierarchicalDataSource({
	                data: testHierarchy
                        })
});


  $("#includeInActive").live('click'function () {
            testHierarchy = [];
            alert(testHierarchy.length);
            $("#testHierarchy").removeClass('k-treeview');
            $("#testHierarchy").empty();
            getHierarchy();
                      
        }


Petur Subev
Telerik team
 answered on 13 Feb 2013
3 answers
350 views
Hi,
I created a grid with a dropdownlist for two fields, and I have set InLine editing as the edit mode.
I want to use the popup editing method, but when I change my code to do this something goes wrong. The two fields I mentioned before, the ones with the dropdown list, are virtual attributes for a class. Each of these contain two fields: Id and Description. I want to show, in my grid, only the description. I have no problems with InLine editing, but I can't do this with popup editing: all fields are showed in my grid, and also the dropdownlist disappears.
I have another question: what are the dropdownlist and the combobox fundamental differences? Which is the better to use in a grid?


THIS IS MY CODE

AnagraficaRistoratoriEspositori.aspx

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/ViewsMasterPage.Master" %>
 
<asp:Content ID="Content1" ContentPlaceHolderID="phdContent" runat="server">
 
    <h2>Gestione Anagrafica Ristoratori/Organizzatori</h2>
 
 
<%: Html.Kendo().Grid<Sopra.Fmspa.BusinessLayer.ViewModels.AnagraficaViewModel>()
    .Name("Grid")
    .HtmlAttributes(new { Style = "height:700px; width:1200px;" })
    .Columns(columns =>
    {
        columns.Bound(e => e.Id).Hidden();
        columns.Bound(e => e.RagioneSociale)
                .Filterable(filterable => filterable.UI("RagioneSocialeFilter"))
                .Width(300);
        columns.Bound(e => e.TipologiaAnagrafica)
                .Filterable(filterable => filterable.UI("TipologiaAnagraficaFilter"))
                .Width(300)
                .ClientTemplate("# try {# #=TipologiaAnagrafica.Descrizione# #} catch (e) {}#");
        columns.Bound(e => e.Padiglione)
                .Filterable(filterable => filterable.UI("PadiglioneFilter"))
                .Width(300)
                .ClientTemplate("# try {# #=Padiglione.Descrizione# #} catch (e) {}#");
        columns.Bound(p => p.Descrizione).Width(300);
        columns.Bound(e => e.FlagEstero)
                .Filterable(filterable => filterable.UI("FlagEsteroFilter"))
                .Width(150);
        //  Batch editing
        //columns.Command(command => command.Destroy()).Width(100);
        //  InLine editing or PopUp editing
        //columns.Command(command => { command.Edit(); command.Destroy(); }).Width(200);
        columns.Command(command => { command.Edit(); command.Destroy(); }).Width(200);
    })
    .Resizable(resizing => resizing.Columns(true))
    .Reorderable(reordering => reordering.Columns(true))
    .Filterable(filterable => filterable
        .Extra(false)
         .Operators(operators => operators
            .ForString(str => str.Clear()
                .StartsWith("Inizia per")
                .IsEqualTo("Equivale a")
                .IsNotEqualTo("Differisce da")
            ))
        )
    .Groupable()
    //  Batch editing
    //.ToolBar(toolbar =>
    //        {
    //            toolbar.Create();
    //            toolbar.Save();
    //        })
    //  InLine editing
    //.ToolBar(toolbar => toolbar.Create())
    .ToolBar(toolbar => toolbar.Create())
    //  Batch editing
    //.Editable(editable => editable.Mode(GridEditMode.InCell))
    //  InLine editing
    //.Editable(editable => editable.Mode(GridEditMode.InLine))
    //  PopUp editing
    //.Editable(editable => editable.Mode(GridEditMode.PopUp))
    .Editable(editable => editable.Mode(GridEditMode.InLine))
    .Pageable()
    .Sortable()
    .Scrollable()
    .ColumnMenu()
    .DataSource(dataSource => dataSource
        .Ajax()
        .ServerOperation(true)
        .PageSize(100)
        .Batch(true)
        .Events(events => events.Error("error_handler"))
        .Model(model =>
            {
                model.Id(p => p.Id);
                model.Field(p => p.FlagEstero).DefaultValue(null);
            })
        .Read("Anagrafiche_Read", "Anagrafica")
        .Update("Anagrafiche_Update", "Anagrafica")
        .Create("Anagrafiche_Create", "Anagrafica")
        .Destroy("Anagrafiche_Delete", "Anagrafica")
    )
%>
 
 
<script type="text/javascript">
    function error_handler(e) {
        if (e.errors) {
            var message = "Errors:\n";
            $.each(e.errors, function (key, value) {
                if ('errors' in value) {
                    $.each(value.errors, function () {
                        message += this + "\n";
                    });
                }
            });
 
            var grid = $("#Grid").data("kendoGrid");
            grid.one("dataBinding", function (e) {
                e.preventDefault();   // cancel grid rebind if error occurs
            });
 
            alert(message);
        }
    }
 
 
    function RagioneSocialeFilter(element) {
        element.kendoDropDownList({
            dataSource: {
                transport: {
                    read: "<%= Url.Action("Anagrafiche_RagioneSocialeFilter") %>"
                }
            },
            optionLabel: "--Scegliere ragione sociale--"
        });
    }
 
    function TipologiaAnagraficaFilter(element) {
        element.kendoDropDownList({
            dataSource: {
                transport: {
                    read: "<%= Url.Action("Anagrafiche_TipologiaAnagraficaFilter") %>"
                }
            },
            optionLabel: "--Scegliere tipologia anagrafica--"
        });
    }
 
    function PadiglioneFilter(element) {
        element.kendoDropDownList({
            dataSource: {
                transport: {
                    read: "<%= Url.Action("Anagrafiche_PadiglioneFilter") %>"
                }
            },
            optionLabel: "--Scegliere padiglione--"
        });
    }
 
    function FlagEsteroFilter(element) {
        element.kendoDropDownList({
            dataSource: {
                transport: {
                    read: "<%= Url.Action("Anagrafiche_FlagEsteroFilter") %>"
                }
            },
            optionLabel: "--Espositore Estero?--"
        });
    }
</script>
 
 
</asp:Content>
 
<asp:Content ID="Content2" ContentPlaceHolderID="phdHeadContent" runat="server">
</asp:Content>

AnagraficaRepository.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Data;
using System.Web;
using System.Text;
using System.Threading.Tasks;
using Sopra.Fmspa.BusinessLayer.Models;
using Sopra.Fmspa.BusinessLayer.ViewModels;
using AutoMapper.Configuration;
using AutoMapper.Mappers;
 
 
/*   SINTASSI AUTOMAPPER
     AutoMapper.Mapper.CreateMap<Sorgente,Destinatario>();
     Destinatario dest = AutoMapper.Mapper.Map<Sorgente,Destinatario>(sorg);   */
 
 
 
namespace Sopra.Fmspa.BusinessLayer.DAL
{
    public class AnagraficaRepository : IAnagraficaRepository, IDisposable
    {
        private ODLModelContainer context;
 
 
        /*   TO DO:
         *   - vedere AnagraficaViewModel.cs
         *   - sistemare il codice in modo tale che questo mapper funzioni senza l'opzione ignore per il campo manifestazione
                                                                                                                  */
 
 
        //public AnagraficaRepository(ODLModelContainer context)
        //{
        //    this.context = context;
 
        //    AutoMapper.Mapper.CreateMap<TipologiaAnagrafica,TipologiaAnagraficaViewModel>();
        //    AutoMapper.Mapper.CreateMap<Padiglione,PadiglioneViewModel>();
        //    AutoMapper.Mapper.CreateMap<Manifestazione,ManifestazioneViewModel>();
 
        //    AutoMapper.Mapper.CreateMap<TipologiaAnagraficaViewModel,TipologiaAnagrafica>();
        //    AutoMapper.Mapper.CreateMap<PadiglioneViewModel,Padiglione>();
        //    AutoMapper.Mapper.CreateMap<ManifestazioneViewModel,Manifestazione>();
 
 
        //    AutoMapper.Mapper.CreateMap<Anagrafica,AnagraficaViewModel>()
        //        .ForMember(dest => dest.TipologiaAnagrafica, opt => opt.MapFrom(src => src.TipologiaAnagrafica))
        //        .ForMember(dest => dest.Padiglione, opt => opt.MapFrom(src => src.Padiglione))
        //        .ForMember(dest => dest.Manifestazione, opt => opt.MapFrom(src => src.Manifestazione));
 
        //    AutoMapper.Mapper.CreateMap<AnagraficaViewModel,Anagrafica>()
        //        .ForMember(dest => dest.TipologiaAnagrafica, opt => opt.MapFrom(src => src.TipologiaAnagrafica))
        //        .ForMember(dest => dest.Padiglione, opt => opt.MapFrom(src => src.Padiglione))
        //        .ForMember(dest => dest.Manifestazione, opt => opt.MapFrom(src => src.Manifestazione));
        //}
 
 
        public AnagraficaRepository(ODLModelContainer context)
        {
            this.context = context;
 
            AutoMapper.Mapper.CreateMap<TipologiaAnagrafica,TipologiaAnagraficaViewModel>();
            AutoMapper.Mapper.CreateMap<Padiglione,PadiglioneViewModel>();
            //AutoMapper.Mapper.CreateMap<Manifestazione, ManifestazioneViewModel>();
 
            AutoMapper.Mapper.CreateMap<TipologiaAnagraficaViewModel,TipologiaAnagrafica>();
            AutoMapper.Mapper.CreateMap<PadiglioneViewModel,Padiglione>();
            //AutoMapper.Mapper.CreateMap<ManifestazioneViewModel, Manifestazione>();
 
 
            AutoMapper.Mapper.CreateMap<Anagrafica,AnagraficaViewModel>()
                .ForMember(dest => dest.TipologiaAnagrafica, opt => opt.MapFrom(src => src.TipologiaAnagrafica))
                .ForMember(dest => dest.Padiglione, opt => opt.MapFrom(src => src.Padiglione));
                //.ForMember(dest => dest.Manifestazione, opt => opt.MapFrom(src => src.Manifestazione));
 
            AutoMapper.Mapper.CreateMap<AnagraficaViewModel,Anagrafica>()
                .ForMember(dest => dest.TipologiaAnagrafica, opt => opt.Ignore())
                .ForMember(dest => dest.Padiglione, opt => opt.Ignore())
                .ForMember(dest => dest.Manifestazione, opt => opt.Ignore());
        }
 
 
        //public AnagraficaRepository(ODLModelContainer context)
        //{
        //    this.context = context;
        //}
 
 
//   ---------------------------------------------------------------------------------------------- //
 
 
        public IEnumerable<Anagrafica> GetAnagrafica()
        {
            return context.odl_Anagrafica.ToList();
        }
 
        public IList<AnagraficaViewModel> GetAnagraficaList()
        {
            List<Anagrafica> anag = context.odl_Anagrafica.ToList();
            List<AnagraficaViewModel> anagview = AutoMapper.Mapper.Map<List<Anagrafica>,List<AnagraficaViewModel>>(anag);
            return anagview;
        }
 
 
//   ---------------------------------------------------------------------------------------------- //
 
 
        //public static IList<AnagraficaViewModel> All()
        //{
        //    IList<AnagraficaViewModel> result = (IList<AnagraficaViewModel>)HttpContext.Current.Session["Anagrafica"];
 
        //    if (result == null)
        //    {
        //        HttpContext.Current.Session["Anagrafica"] = result =
        //            (from anag in new ODLModelContainer().odl_Anagrafica
        //             select new AnagraficaViewModel
        //             {
        //                 Id = anag.Id,
        //                 AccountNumber = anag.AccountNumber,
        //                 RagioneSociale = anag.RagioneSociale,
        //                 TipologiaAnagraficaId = anag.TipologiaAnagraficaId,
        //                 Descrizione = anag.Descrizione,
        //                 ManifestazioneId = anag.ManifestazioneId,
        //                 PadiglioneId = anag.PadiglioneId,
        //                 Stand = anag.Stand,
        //                 FlagSolvenza = anag.FlagSolvenza,
        //                 FlagEstero = anag.FlagEstero,
 
        //                 TipologiaAnagrafica = anag.TipologiaAnagrafica,
        //                 Padiglione = anag.Padiglione
        //             }).ToList();
        //    }
 
        //    return result;
        //}
 
 
//   ---------------------------------------------------------------------------------------------- //
 
 
        //public static AnagraficaViewModel One(Func<AnagraficaViewModel, bool> predicate)
        //{
        //    return All().Where(predicate).FirstOrDefault();
        //}
 
 
//   ---------------------------------------------------------------------------------------------- //
 
 
        //public void Insert(AnagraficaViewModel anagview)
        //{
        //    if (anagview != null)
        //    {
        //        Anagrafica anag = AutoMapper.Mapper.Map<AnagraficaViewModel, Anagrafica>(anagview);
        //        context.odl_Anagrafica.Add(anag);
        //    }
        //}
 
 
        public void Insert(AnagraficaViewModel anagview)
        {
            if (anagview != null)
            {
                Anagrafica anag = AutoMapper.Mapper.Map<AnagraficaViewModel, Anagrafica>(anagview);
 
                // valore forzato
                anag.ManifestazioneId = anagview.ManifestazioneId;
 
                context.odl_Anagrafica.Add(anag);
            }
        }
 
 
        //public void Insert(AnagraficaViewModel anagview)
        //{
        //    Anagrafica anag = new Anagrafica();
 
        //    anag.Id = anagview.Id;
        //    anag.AccountNumber = anagview.AccountNumber;
        //    anag.RagioneSociale = anagview.RagioneSociale;
        //    anag.TipologiaAnagraficaId = anagview.TipologiaAnagraficaId;
        //    anag.Descrizione = anagview.Descrizione;
        //    anag.ManifestazioneId = anagview.ManifestazioneId;
        //    anag.PadiglioneId = anagview.PadiglioneId;
        //    anag.Stand = anagview.Stand;
        //    anag.FlagSolvenza = anagview.FlagSolvenza;
        //    anag.FlagEstero = anagview.FlagEstero;
 
        //    anag.TipologiaAnagrafica = anagview.TipologiaAnagrafica;
        //    anag.Padiglione = anagview.Padiglione;
 
        //    context.odl_Anagrafica.Add(anag);
        //}
 
 
        //public static void Insert(AnagraficaViewModel anag)
        //{
        //    anag.Id = All().OrderByDescending(p => p.Id).First().Id + 1;
 
        //    All().Insert(0, anag);
        //}
 
 
//   ---------------------------------------------------------------------------------------------- //
 
 
        public void Update(AnagraficaViewModel anagview)
        {
            if (anagview != null)
            {
                Anagrafica anag = AutoMapper.Mapper.Map<AnagraficaViewModel,Anagrafica>(anagview);
                context.odl_Anagrafica.Attach(anag);
                context.Entry(anag).State = EntityState.Modified;
            }
        }
 
 
        //public void Update(AnagraficaViewModel anagview)
        //{
        //    Anagrafica anag = context.odl_Anagrafica.Find(anagview.Id);
 
        //    if (anag != null)
        //    {
        //        anag.Id = anagview.Id;
        //        anag.AccountNumber = anagview.AccountNumber;
        //        anag.RagioneSociale = anagview.RagioneSociale;
        //        anag.TipologiaAnagraficaId = anagview.TipologiaAnagraficaId;
        //        anag.Descrizione = anagview.Descrizione;
        //        anag.ManifestazioneId = anagview.ManifestazioneId;
        //        anag.PadiglioneId = anagview.PadiglioneId;
        //        anag.Stand = anagview.Stand;
        //        anag.FlagSolvenza = anagview.FlagSolvenza;
        //        anag.FlagEstero = anagview.FlagEstero;
 
        //        anag.TipologiaAnagrafica = anagview.TipologiaAnagrafica;
        //        anag.Padiglione = anagview.Padiglione;
 
        //        context.Entry(anag).State = EntityState.Modified;
        //    }
        //}
 
 
        //public static void Update(AnagraficaViewModel anag)
        //{
        //    AnagraficaViewModel target = One(p => p.Id == anag.Id);
        //    if (target != null)
        //    {
        //        target.AccountNumber = anag.AccountNumber;
        //        target.RagioneSociale = anag.RagioneSociale;
        //        target.TipologiaAnagraficaId = anag.TipologiaAnagraficaId;
        //        target.Descrizione = anag.Descrizione;
        //        target.ManifestazioneId = anag.ManifestazioneId;
        //        target.PadiglioneId = anag.PadiglioneId;
        //        target.Stand = anag.Stand;
        //        target.FlagSolvenza = anag.FlagSolvenza;
        //        target.FlagEstero = anag.FlagEstero;
 
        //        target.TipologiaAnagrafica = anag.TipologiaAnagrafica;
        //        target.Padiglione = anag.Padiglione;
        //    }
        //}
 
 
//   ---------------------------------------------------------------------------------------------- //
 
 
        public void Delete(AnagraficaViewModel anagview)
        {
            Anagrafica anag = context.odl_Anagrafica.Find(anagview.Id);
            if (anag != null)
            {
                context.odl_Anagrafica.Remove(anag);
            }
        }
 
        //public static void Delete(AnagraficaViewModel anag)
        //{
        //    AnagraficaViewModel target = One(p => p.Id == anag.Id);
        //    if (target != null)
        //    {
        //        All().Remove(target);
        //    }
        //}
 
 
//   ---------------------------------------------------------------------------------------------- //
 
 
        public void Save()
        {
            context.SaveChanges();
        }
 
 
        private bool disposed = false;
 
        protected virtual void Dispose(bool disposing)
        {
            if (!this.disposed)
            {
                if (disposing)
                {
                    // dispose della classe context <--- dispose della classe ODLModelContainer
                    context.Dispose();
                }
            }
            this.disposed = true;
        }
 
        public void Dispose()
        {
            // dispose della classe IDisposable ---> GC ---> liberazione della memoria
            Dispose(true);
            GC.SuppressFinalize(this);
        }
    }
}
 
 
 
/*   TO DO:
 *   - aggiungere la possibilità di scegliere, per ogni record della grid, una manifestazione
 *   - collegamento tra la pagina manifestazioni e questa pagina (anagrafica in bianco)
 *   - migliorare l'interfaccia grafica, in particolare l'aspetto della grid
 *   - controllo ad inserimento per la ragione sociale: stabilire se una voce è già stata inserita nel database
                                                                                                                   */


AnagraficaController.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Mvc;
using Kendo.Mvc.Extensions;
using Kendo.Mvc.UI;
using Sopra.Fmspa.BusinessLayer.Models;
using Sopra.Fmspa.BusinessLayer.DAL;
using Sopra.Fmspa.BusinessLayer.ViewModels;
using System.Data.Entity.Validation;
using System.Diagnostics;
using AutoMapper.Configuration;
using AutoMapper.Mappers;
 
 
/*   SINTASSI AUTOMAPPER
     AutoMapper.Mapper.CreateMap<Sorgente,Destinatario>();
     Destinatario dest = AutoMapper.Mapper.Map<Sorgente,Destinatario>(sorg);   */
 
 
 
namespace Sopra.Fmspa.BusinessLayer.Controllers
{
 
    public class AnagraficaController : Controller
    {
        ODLModelContainer db = new ODLModelContainer();
        private IAnagraficaRepository anagraficaRepository;
 
 
        //public AnagraficaController()
        //{
        //    this.anagraficaRepository = new AnagraficaRepository(new ODLModelContainer());
 
        //    AutoMapper.Mapper.CreateMap<TipologiaAnagrafica,TipologiaAnagraficaViewModel>();
        //    AutoMapper.Mapper.CreateMap<Padiglione,PadiglioneViewModel>();
        //    AutoMapper.Mapper.CreateMap<Manifestazione,ManifestazioneViewModel>();
 
        //    AutoMapper.Mapper.CreateMap<TipologiaAnagraficaViewModel,TipologiaAnagrafica>();
        //    AutoMapper.Mapper.CreateMap<PadiglioneViewModel,Padiglione>();
        //    AutoMapper.Mapper.CreateMap<ManifestazioneViewModel,Manifestazione>();
 
 
        //    AutoMapper.Mapper.CreateMap<Anagrafica,AnagraficaViewModel>()
        //        .ForMember(dest => dest.TipologiaAnagrafica, opt => opt.MapFrom(src => src.TipologiaAnagrafica))
        //        .ForMember(dest => dest.Padiglione, opt => opt.MapFrom(src => src.Padiglione))
        //        .ForMember(dest => dest.Manifestazione, opt => opt.MapFrom(src => src.Manifestazione));
 
        //    AutoMapper.Mapper.CreateMap<AnagraficaViewModel,Anagrafica>()
        //        .ForMember(dest => dest.TipologiaAnagrafica, opt => opt.MapFrom(src => src.TipologiaAnagrafica))
        //        .ForMember(dest => dest.Padiglione, opt => opt.MapFrom(src => src.Padiglione))
        //        .ForMember(dest => dest.Manifestazione, opt => opt.MapFrom(src => src.Manifestazione));
 
        //    //AutoMapper.Mapper.CreateMap<AnagraficaViewModel,AnagraficaViewModel>();
        //}
 
 
        public AnagraficaController()
        {
            this.anagraficaRepository = new AnagraficaRepository(new ODLModelContainer());
 
            AutoMapper.Mapper.CreateMap<TipologiaAnagrafica,TipologiaAnagraficaViewModel>();
            AutoMapper.Mapper.CreateMap<Padiglione,PadiglioneViewModel>();
            //AutoMapper.Mapper.CreateMap<Manifestazione,ManifestazioneViewModel>();
 
            AutoMapper.Mapper.CreateMap<TipologiaAnagraficaViewModel,TipologiaAnagrafica>();
            AutoMapper.Mapper.CreateMap<PadiglioneViewModel,Padiglione>();
            //AutoMapper.Mapper.CreateMap<ManifestazioneViewModel,Manifestazione>();
 
 
            AutoMapper.Mapper.CreateMap<Anagrafica,AnagraficaViewModel>()
                .ForMember(dest => dest.TipologiaAnagrafica, opt => opt.MapFrom(src => src.TipologiaAnagrafica))
                .ForMember(dest => dest.Padiglione, opt => opt.MapFrom(src => src.Padiglione));
                //.ForMember(dest => dest.Manifestazione, opt => opt.MapFrom(src => src.Manifestazione));
 
            AutoMapper.Mapper.CreateMap<AnagraficaViewModel,Anagrafica>()
                .ForMember(dest => dest.TipologiaAnagrafica, opt => opt.Ignore())
                .ForMember(dest => dest.Padiglione, opt => opt.Ignore())
                .ForMember(dest => dest.Manifestazione, opt => opt.Ignore());
 
            //AutoMapper.Mapper.CreateMap<AnagraficaViewModel,AnagraficaViewModel>();
        }
 
 
        public AnagraficaController(IAnagraficaRepository anagraficaRepository)
        {
            this.anagraficaRepository = anagraficaRepository;
        }
 
 
        public ActionResult Remote_Data()
        {
            return View("AjaxBinding");
        }
 
 
//   ---------------------------------------------------------------------------------------------- //
 
 
        public ActionResult AnagraficaRistoratoriEspositori()
        {
            IList<AnagraficaViewModel> anagview = anagraficaRepository.GetAnagraficaList();
 
            PopulateTipologiaAnagrafica();
            PopulatePadiglione();
 
            return View(anagview);
        }
 
 
        //public ActionResult AnagraficaRistoratoriEspositori()
        //{
        //    IEnumerable<Anagrafica> anag = anagraficaRepository.GetAnagrafica();
 
        //    PopulateTipologiaAnagrafica();
        //    PopulatePadiglione();
 
        //    return View(anag);
        //}
 
 
//   ---------------------------------------------------------------------------------------------- //
 
 
        public ActionResult Anagrafiche_Read([DataSourceRequest] DataSourceRequest request)
        {
            return Json(anagraficaRepository.GetAnagraficaList().ToDataSourceResult(request));
        }
 
 
        //public ActionResult Anagrafiche_Read([DataSourceRequest] DataSourceRequest request)
        //{
        //    return Json(AnagraficaRepository.All().ToDataSourceResult(request));
        //}
 
 
//   ---------------------------------------------------------------------------------------------- //
 
 
        public ActionResult Anagrafiche_RagioneSocialeFilter()
        {
            return Json(anagraficaRepository.GetAnagrafica().Select(e => e.RagioneSociale).Distinct(), JsonRequestBehavior.AllowGet);
        }
 
        public ActionResult Anagrafiche_TipologiaAnagraficaFilter()
        {
            return Json(anagraficaRepository.GetAnagrafica().Select(e => e.TipologiaAnagrafica).Distinct(), JsonRequestBehavior.AllowGet);
        }
 
        public ActionResult Anagrafiche_PadiglioneFilter()
        {
            return Json(anagraficaRepository.GetAnagrafica().Select(e => e.Padiglione).Distinct(), JsonRequestBehavior.AllowGet);
        }
 
        public ActionResult Anagrafiche_FlagEsteroFilter()
        {
            return Json(anagraficaRepository.GetAnagrafica().Select(e => e.FlagEstero).Distinct(), JsonRequestBehavior.AllowGet);
        }
 
 
//   ---------------------------------------------------------------------------------------------- //
 
 
        //[AcceptVerbs(HttpVerbs.Post)]
        //public ActionResult Anagrafiche_Create([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")]IEnumerable<AnagraficaViewModel> anagrafiche)
        //{
        //    if (anagrafiche != null && ModelState.IsValid)
        //    {
        //        foreach (var anag in anagrafiche)
        //        {
        //            anagraficaRepository.Insert(anag);
        //        }
        //        anagraficaRepository.Save();
        //    }
        //    return Json(ModelState.ToDataSourceResult());
        //}
 
 
        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Anagrafiche_Create([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")]IEnumerable<AnagraficaViewModel> anagrafiche)
        {
            if (anagrafiche != null && ModelState.IsValid)
            {
                foreach (var anag in anagrafiche)
                {
                    anag.Id = anagraficaRepository.GetAnagrafica().OrderByDescending(p => p.Id).First().Id + 1;
                    anag.TipologiaAnagraficaId = anag.TipologiaAnagrafica.Id;
                    anag.PadiglioneId = anag.Padiglione.Id;
 
                    // valore forzato
                    if (anag.ManifestazioneId == null)
                    {
                        //anag.Manifestazione.Id = anagraficaRepository.GetAnagrafica().OrderByDescending(p => p.Id).First().Manifestazione.Id;
                        anag.ManifestazioneId = anagraficaRepository.GetAnagrafica().OrderByDescending(p => p.Id).First().ManifestazioneId;
                    }
                    //anag.ManifestazioneId = anag.Manifestazione.Id;
 
                    anagraficaRepository.Insert(anag);
                }
                anagraficaRepository.Save();
            }
            return Json(ModelState.ToDataSourceResult());
        }
 
 
        //[AcceptVerbs(HttpVerbs.Post)]
        //public ActionResult Anagrafiche_Create([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")]IEnumerable<AnagraficaViewModel> anagrafiche)
        //{
        //    var results = new List<AnagraficaViewModel>();
        //    if (anagrafiche != null && ModelState.IsValid)
        //    {
        //        foreach (var anag in anagrafiche)
        //        {
        //            anagraficaRepository.Insert(anag);
        //            results.Add(anag);
        //        }
        //        anagraficaRepository.Save();
        //    }
        //    return Json(results.ToDataSourceResult(request, ModelState));
        //}
 
 
//   ---------------------------------------------------------------------------------------------- //
 
 
        private void PopulateTipologiaAnagrafica()
        {
            ViewData["TipologiaAnagrafiche"] = AutoMapper.Mapper.Map<IList<TipologiaAnagrafica>,IList<TipologiaAnagraficaViewModel>>(db.odl_TipologiaAnagrafica.ToList());
        }
 
        private void PopulatePadiglione()
        {
            ViewData["Padiglioni"] = AutoMapper.Mapper.Map<IList<Padiglione>,IList<PadiglioneViewModel>>(db.odl_Padiglione.ToList());
        }
 
 
//   ---------------------------------------------------------------------------------------------- //
 
 
        //[AcceptVerbs(HttpVerbs.Post)]
        //public ActionResult Anagrafiche_Update([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")]IEnumerable<AnagraficaViewModel> anagrafiche)
        //{
        //    if (anagrafiche != null && ModelState.IsValid)
        //    {
        //        foreach (var anag in anagrafiche)
        //        {
        //            anag.TipologiaAnagrafica.Id = anag.TipologiaAnagraficaId;
        //            anag.Padiglione.Id = anag.PadiglioneId;
        //            anag.Manifestazione.Id = anag.ManifestazioneId;
 
        //            anagraficaRepository.Update(anag);
        //        }
        //        anagraficaRepository.Save();
        //    }
        //    return Json(ModelState.ToDataSourceResult());
        //}
 
 
        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Anagrafiche_Update([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")]IEnumerable<AnagraficaViewModel> anagrafiche)
        {
            if (anagrafiche != null && ModelState.IsValid)
            {
                foreach (var anag in anagrafiche)
                {
                    anag.TipologiaAnagrafica.Id = anag.TipologiaAnagraficaId;
                    anag.Padiglione.Id = anag.PadiglioneId;
                    //anag.Manifestazione.Id = anag.ManifestazioneId;
 
                    anagraficaRepository.Update(anag);
                }
                anagraficaRepository.Save();
            }
            return Json(ModelState.ToDataSourceResult());
        }
 
 
        //[AcceptVerbs(HttpVerbs.Post)]
        //public ActionResult Anagrafiche_Update([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")]IEnumerable<AnagraficaViewModel> anagrafiche)
        //{
        //    if (anagrafiche != null && ModelState.IsValid)
        //    {
        //        foreach (var anag in anagrafiche)
        //        {
        //            var target = AnagraficaRepository.One(p => p.Id == anag.Id);
        //            if (target != null)
        //            {
        //                target = AutoMapper.Mapper.Map<AnagraficaViewModel, AnagraficaViewModel>(anag);
        //                anagraficaRepository.Update(target);
        //            }
        //        }
        //        anagraficaRepository.Save();
        //    }
        //    return Json(ModelState.ToDataSourceResult());
        //}
 
 
        //[AcceptVerbs(HttpVerbs.Post)]
        //public ActionResult Anagrafiche_Update([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")]IEnumerable<AnagraficaViewModel> anagrafiche)
        //{
        //    if (anagrafiche != null && ModelState.IsValid)
        //    {
        //        foreach (var anag in anagrafiche)
        //        {
        //            var target = AnagraficaRepository.One(p => p.Id == anag.Id);
        //            if (target != null)
        //            {
        //                target.AccountNumber = anag.AccountNumber;
        //                target.RagioneSociale = anag.RagioneSociale;
        //                target.TipologiaAnagraficaId = anag.TipologiaAnagraficaId;
        //                target.Descrizione = anag.Descrizione;
        //                target.ManifestazioneId = anag.ManifestazioneId;
        //                target.PadiglioneId = anag.PadiglioneId;
        //                target.Stand = anag.Stand;
        //                target.FlagSolvenza = anag.FlagSolvenza;
        //                target.FlagEstero = anag.FlagEstero;
 
        //                target.TipologiaAnagrafica = anag.TipologiaAnagrafica;
        //                target.Padiglione = anag.Padiglione;
 
        //                anagraficaRepository.Update(target);
        //            }
        //        }
        //        anagraficaRepository.Save();
        //    }
        //    return Json(ModelState.ToDataSourceResult());
        //}
 
 
//   ---------------------------------------------------------------------------------------------- //
 
 
        public ActionResult Anagrafiche_Delete([Bind(Prefix = "models")]IEnumerable<AnagraficaViewModel> anagrafiche)
        {
            if (anagrafiche.Any())
            {
                Anagrafiche_Destroy(anagrafiche);
            }
            else
            {
                return HttpNotFound();
            }
 
            return Json(ModelState.ToDataSourceResult());
        }
 
        [HttpPost, ActionName("Anagrafiche_Delete")]
        public void Anagrafiche_Destroy([Bind(Prefix = "models")]IEnumerable<AnagraficaViewModel> anagrafiche)
        {
            if (ModelState.IsValid)
            {
                foreach (var anag in anagrafiche)
                {
                    anagraficaRepository.Delete(anag);
                }
            }
            anagraficaRepository.Save();
        }
 
 
        //[AcceptVerbs(HttpVerbs.Post)]
        //public ActionResult Anagrafiche_Destroy([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")]IEnumerable<AnagraficaViewModel> anagrafiche)
        //{
        //    if (anagrafiche.Any() && ModelState.IsValid)
        //    {
        //        foreach (var anag in anagrafiche)
        //        {
        //            anagraficaRepository.Delete(anag);
        //        }
        //    }
        //    anagraficaRepository.Save();
 
        //    return Json(ModelState.ToDataSourceResult());
        //}
 
 
//   ---------------------------------------------------------------------------------------------- //
 
 
    }
 
}
 
 
 
/*   TO DO:
 *   - aggiungere la possibilità di scegliere, per ogni record della grid, una manifestazione
 *   - collegamento tra la pagina manifestazioni e questa pagina (anagrafica in bianco)
 *   - migliorare l'interfaccia grafica, in particolare l'aspetto della grid
 *   - controllo ad inserimento per la ragione sociale: stabilire se una voce è già stata inserita nel database
                                                                                                                   */
Stefano
Top achievements
Rank 1
 answered on 13 Feb 2013
0 answers
80 views
Edit: Thought this was a ticket but realized I was wrong and have now added a support ticket for this issue.

Hi, 

We have a grid that we would like to populate with server side sorted information. So what we did was this:
@(Html.Kendo().Grid<MyProject.ViewModels.Calculation.WorkGridItem>()
      .Name("grid")
      .BindTo(Model.WorkGrid.WorkGridItems)
      .Columns(c =>
                   {
                       c.Bound(i => i.Identifier).Title("Id");
                       c.Bound(i => i.Name).Title("Namn");
                       c.Bound(i => i.City).Title("Stad");
 
                       c.Bound(i => i.Status).Title("Status");
                       c.Bound(i => i.StartDate).Title("Start");
                       c.Bound(i => i.EndDate).Title("Slut");
                       c.Bound(i => i.Created).Title("Skapad");
                       c.Bound(i => i.SigningDate).Title("Signatur");
                   })
            .ClientDetailTemplateId("expandedRowTemplate")
            .Events(l => l.DetailInit("OnLoadDetail"))
            .Events(ev => ev.DetailExpand("detailExpand"))
            .Pageable(x =>
                    {
                        x.PageSizes(new int[] { 50, 100, 200 });
                        x.Refresh(true);
                    })
        .Sortable(x => x.Enabled(true))
        .DataSource(ds => ds.
                            Ajax()
                            .ServerOperation(true)
                            .Read(read => read
                                              .Action("ReadGridItems", "Calculations",
                                                      new
                                                          {
                                                              selectedTab = Model.Tabs.SelectedTab().Value,
                                                              gridType = Model.PageHeaderSearch.SelectedSearchType,
                                                              searchString = Model.PageHeaderSearch.SearchWord,
                                                               
                                                          })
                                              .Type(HttpVerbs.Post)
                            )
                            .PageSize(50)
We then sort the data, and returns the data source and I can see it being sorted the way I want it to. However, when the data is redered in the grid it is all messed up. 

When sorting desc on one of the columns, the date would look like this:

28.02.2013
28.02.2013
28.02.2013
28.02.2013
28.02.2013
26.02.2013
25.03.2013
25.02.2014
25.02.2013


Why is this? By setting ServerOperation to true, whould that not then let me do the sorting on the server side and then let me just render the data? 

Any thought on this?


Patric Svensson
Top achievements
Rank 1
 asked on 13 Feb 2013
2 answers
173 views
We use the Kendo Grid Column Menu but would like the “Columns” submenu to not disappear when the mouse leaves the submenu.  So we want the submenu to be “sticky.”  Is there a way to do that?  Also, what event triggers the submenu to disappears and where is it done?  Please see image below.
Thuy
Top achievements
Rank 1
 answered on 12 Feb 2013
1 answer
123 views
Hello,
I apologize now for probably obvious question, I just bought your products and today began my first application.

Following several tutorials I started the first project to try to use Kendo Grid and openaccess ORM.

Here's what I do:

- Create a new project c # kendo ui for MVC
- I choose to use OpenAccess domain model orm
- I create a new domain class test with some property
- Run "update db from model" and configure the connection

So far so good, the database is created and works.

Then I click "Add OpenAccess Service" and select "WCF .. - Odatav3" and finish.
It creates the file "EntitiesModelService.svc."

The problem is that if I click "View in browser" on that file to see if it works (as in yours tutorial) I always get an error

Server Error in '/' Application ...
The resource can not be found ...
HTTP404
RequestedUrl: / EntitiesModelService.svc "

What can I try? Please help me.
Thanks in advance,
Luca
Boris Georgiev
Telerik team
 answered on 12 Feb 2013
1 answer
422 views
I am trying to learn the kendoUI. MVC 4 Razor.

Inorder to use it, can I learn via the GPL version and what do I get for paying the $1,000 that's different, minus the viz controls. I'm only interested in the grid, tree view, and date picker at the moment.

I hear that the GPL is jquery only and the commercial is c#. Is this tru? Can someone please explain the difference to me if I only care about those controls at the moment? Obviously after i'm comfortable I could buy the full version to get all the tools.

I'm confused, because the bloggers seem to contradict each other when reading multiple blogs.

Thanks,
Nick

PS. This is fully personal use. No public facing web site, just educational.
Sebastian
Telerik team
 answered on 12 Feb 2013
14 answers
1.0K+ views

Is this a bug or am I doing something stupid?

The code for the dropdownlist works independently, just not inside a Kendo Window?

If you change the window DIV name or the name in the javascript so it isn't generate, the drop-down-list works just fine?

I've tried to narrow out down to the least possible code that demonstrates the problem:

<!DOCTYPE html>
<html>
<head>
    <script src="http://localhost:59181/Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>
<link href="http://localhost:59181/Content/kendo/2012.2.913/kendo.common.min.css" rel="stylesheet" type="text/css" />
<link href="http://localhost:59181/Content/kendo/2012.2.913/kendo.blueopal.min.css" rel="stylesheet" type="text/css" />
<script src="http://localhost:59181/Scripts/kendo/2012.2.913/jquery.min.js"></script>
<script src="http://localhost:59181/Scripts/kendo/2012.2.913/kendo.all.min.js"></script>
<script src="http://localhost:59181/Scripts/kendo/2012.2.913/kendo.aspnetmvc.min.js"></script>
</head>
<body>
        <div id="XXXwindow" class="k-content" style="overflow: scroll;" >
x<input data-val="true" data-val-number="" data-val-required="" id="Group2" name="Group2" type="text" value="9" />x
<script>
jQuery(function(){jQuery("#Group2").kendoDropDownList({"dataSource":[
{"ID":9,"Description":"[All membership types]","Value":"\/Date(254966400000)\/"},
{"ID":10,"Description":"Monthly Fees","Value":"\/Date(254966400000)\/"},
{"ID":11,"Description":"Cards","Value":"\/Date(254966400000)\/"}],
"dataTextField":"Description","dataValueField":"ID"});});
</script> 
            </div>
            <script type="text/javascript"> $("#XXXwindow").kendoWindow({ width: 500, height: 500 });  </script>
</body>
</html>
Alon
Top achievements
Rank 1
 answered on 12 Feb 2013
1 answer
328 views
Hello.
Have anybody ever tried to use Kendo helpers for creating Filter Templates?
<div>
@(Html.Kendo().Grid(Model)
        .Name("Grid")
        .Columns(columns =>
        {
            columns.Bound(p => p.Id);
            columns.Bound(p => p.UserName);
            columns.Bound(p => p.FullName);
            columns.Bound(p => p.Organization).ClientTemplate(
                 "# if (data.Organization != null) { #" +
                 "#= data.Organization.Name #" +
                 "# } else { #" +
                 "#: '<N/A>' #" +
                 "# } #"
                )
                .Filterable(filterable => filterable.UI("orgFilterKendo"));
             
            columns.Bound(p => p.Email);
            columns.Bound(p => p.PhoneNumber);
            columns.Bound(p => p.PostName);
        })
        .Filterable(filterable => filterable
            .Extra(true)          
        )       
        .EnableCustomBinding(true)
        .DataSource(dataSource => dataSource
            .Ajax()          
            .Model(model => {
                model.Id(p => p.Id);
                model.Field(p => p.Id).Editable(false);
            })
            .Read("GetGridData", "User")
        )
    )
</div>
<script id="orgFilterKendo" type="text/x-kendo-template">
    @Html.Kendo().DropDownListFor(
    @(Html.Kendo().DropDownList()       
        .Name("Organization")
        .DataValueField("Id")
        .DataTextField("Name")
        .OptionLabel("Не задано")
        .BindTo((System.Collections.IEnumerable)ViewData["UserOrganizations"])
        .ToClientTemplate()
)
</script>
The above example doesn't work :-(
I don't want to use JavaScript like in the example. The solution described below works fine, but I have to bind data again and I can't bind it to the ViewData directly.
<script type="text/javascript">
    function orgFilterKendo(element) {
        element.kendoDropDownList({
            dataTextField: "Name",
            dataValueField: "Id",
            optionLabel: "--Select Value--",
            dataSource: {
                transport: {
                    read: "@Url.Action("FilterMenu_Organizations")"
                }               
            }          
        });
    }
        
</script>

Rosen
Telerik team
 answered on 12 Feb 2013
3 answers
222 views
I have a parent/child grid which correctly displays the child table and is working for both Read & Create. However, Update and Delete don't pass the Id in the URL as I can see from the console.
.DataSource(dataSource => dataSource
                .Ajax()
                 .Model(model =>
            {
                model.Id(g => g.id);
                model.Field(g => g.id).Editable(false);
                model.Field(g => g.user_id);
                model.Field(g => g.group_id);
            })
                .Read(read => read.Url("http://localhost:808/api/UserGroup/" + "#=id#").Type(HttpVerbs.Get))
                .Create(c => c.Url("http://localhost:808/api/UserGroup").Type(HttpVerbs.Post))
                .Update(update => update.Url("http://localhost:808/api/UserGroup").Type(HttpVerbs.Put))
                .Destroy(destroy => destroy.Url("http://localhost:808/api/UserGroup").Type(HttpVerbs.Delete))
            )
This is what I see in the console:
OPTIONS http://localhost:808/api/UserGroup 405 (Method Not Allowed) jquery.min.js:2
OPTIONS http://localhost:808/api/UserGroup 405 (Method Not Allowed) jquery.min.js:2
DELETE http://localhost:808/api/UserGroup 404 (Not Found) UserGroup:1
XHR finished loading: "http://localhost:808/api/UserGroup".
The DELETE should be passing the Id of the row.
Petur Subev
Telerik team
 answered on 11 Feb 2013
9 answers
630 views
Hi,
I need to check the current item to display Destroy button or not. But I can't figure out how to write the if-statement.
Currently it looks like:
columns.Command(commands =>
{                
     commands.Edit();
     @<text>
     @if (!item.IsStartPage)
     {
          commands.Destroy();
     }
     </text>;
})

How should it look like?

And as I wrote in this thread: http://www.kendoui.com/forums/mvc/grid/enable-properties-by-true-false.aspx
it would be more beautiful to just write:
columns.Command(commands =>
{               
     commands.Edit();
     commands.Destroy(!item.IsStartPage);
})
:)

Regards,
Mattias
Dimiter Madjarov
Telerik team
 answered on 11 Feb 2013
Narrow your results
Selected tags
Tags
Grid
General Discussions
Scheduler
DropDownList
Chart
Editor
TreeView
DatePicker
ComboBox
Upload
MultiSelect
ListView
Window
TabStrip
Menu
Installer and VS Extensions
Spreadsheet
AutoComplete
TreeList
Gantt
PanelBar
NumericTextBox
Filter
ToolTip
Map
Diagram
Button
PivotGrid
Form
ListBox
Splitter
Application
FileManager
Sortable
Calendar
View
MaskedTextBox
PDFViewer
TextBox
Toolbar
Dialog
MultiColumnComboBox
DropDownTree
Checkbox
Slider
Switch
Notification
Accessibility
ListView (Mobile)
Pager
ColorPicker
DateRangePicker
Security
Wizard
Styling
Chat
DateInput
MediaPlayer
TileLayout
Drawer
SplitView
Template
Barcode
ButtonGroup (Mobile)
Drawer (Mobile)
ImageEditor
RadioGroup
Sparkline
Stepper
TabStrip (Mobile)
GridLayout
Badge
LinearGauge
ModalView
ResponsivePanel
TextArea
Breadcrumb
ExpansionPanel
Licensing
Rating
ScrollView
ButtonGroup
CheckBoxGroup
NavBar
ProgressBar
QRCode
RadioButton
Scroller
Timeline
TreeMap
TaskBoard
OrgChart
Captcha
ActionSheet
Signature
DateTimePicker
AppBar
BottomNavigation
Card
FloatingActionButton
Localization
MultiViewCalendar
PopOver (Mobile)
Ripple
ScrollView (Mobile)
Switch (Mobile)
PivotGridV2
FlatColorPicker
ColorPalette
DropDownButton
AIPrompt
PropertyGrid
ActionSheet (Mobile)
BulletGraph
Button (Mobile)
Collapsible
Loader
CircularGauge
SkeletonContainer
Popover
HeatMap
Avatar
ColorGradient
CircularProgressBar
SplitButton
StackLayout
TimeDurationPicker
Chip
ChipList
DockManager
ToggleButton
Sankey
OTPInput
ChartWizard
SpeechToTextButton
InlineAIPrompt
TimePicker
StockChart
RadialGauge
ContextMenu
ArcGauge
AICodingAssistant
SmartPasteButton
PromptBox
SegmentedControl
+? more
Top users last month
Miljana
Top achievements
Rank 2
Iron
Iron
Joel
Top achievements
Rank 3
Bronze
Bronze
Bronze
Cynthia
Top achievements
Rank 1
John
Top achievements
Rank 1
Iron
Mozart
Top achievements
Rank 1
Iron
Veteran
Want to show your ninja superpower to fellow developers?
Top users last month
Miljana
Top achievements
Rank 2
Iron
Iron
Joel
Top achievements
Rank 3
Bronze
Bronze
Bronze
Cynthia
Top achievements
Rank 1
John
Top achievements
Rank 1
Iron
Mozart
Top achievements
Rank 1
Iron
Veteran
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?