This is a migrated thread and some comments may be shown as answers.

[Solved] Grid + DropDownList some problems ...

0 Answers 126 Views
General Discussions
This is a migrated thread and some comments may be shown as answers.
This question is locked. New answers and comments are not allowed.
Tuinel
Top achievements
Rank 1
Tuinel asked on 04 Oct 2011, 07:07 PM
Hey

I try make some grid and in editor some dropdown. Idea is make table with ID and parentID to make parents and children Example:

Model:
public class Paragraf
{
    [Key]
    [ScaffoldColumn(false)]
    public virtual int ParagrafID { get; set; }
    public virtual int ParagrafParent { get; set; }
    public virtual string ParagrafNazwa { get; set; }
}

Control:
public ViewResult Index()
{
    return View(paragrafRepository.All);
}
 
//
// AJAX GRID: select, insert, update, delete
[AcceptVerbs(HttpVerbs.Post)]
[GridAction]
public ActionResult _IndexAjax()
{
     return View(new GridModel(paragrafRepository.All));
}
[AcceptVerbs(HttpVerbs.Post)]
[GridAction]
public ActionResult _UpdateAjax(int id)
        {
            Paragraf updateParagraf = paragrafRepository.Find(id);
            try
            {
                if (updateParagraf != null)
                {
                    if (TryUpdateModel(updateParagraf))
                    {
                        UpdateModel(updateParagraf);
                        paragrafRepository.Save();
                        return View(new GridModel(paragrafRepository.All));
                    }
                }
            }
            catch (DataException)
            {
                //Log the error (add a variable name after DataException)
                ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists see your system administrator.");
            }
            //Rebind the grid
            return View(new GridModel(paragrafRepository.All));
        }
 
[HttpPost]
 public ActionResult _AjaxParentParagrafLoading(int slecectedParent)
        {
            var parentParagraf = from p in paragrafRepository.All
                                 orderby p.ParagrafNazwa
                                 select new ParagrafParentViewModel
                                 {
                                     ParagrafID = p.ParagrafID,
                                     ParagrafParent = p.ParagrafParent,
                                     ParagrafNazwa = p.ParagrafNazwa
                                 };


            List<SelectListItem> items = new SelectList(parentParagraf.ToList(), "ParagrafID", "ParagrafNazwa", slecectedParent).ToList();
            items.Insert(0, (new SelectListItem { Text = "No Parent", Value = "0" }));
            ViewData["Paragrafy"] = items;

            return new JsonResult { Data = items };
        }

View:
@model IEnumerable<Projekty03.Models.Paragraf>
 @(Html.Telerik().Grid(Model)
        .Name("ParagrafGrid")
        .Columns(columns =>
        {
            columns.Bound(c => c.ParagrafParent);
            columns.Bound(c => c.ParagrafNazwa);
            columns.Command(commands =>
            {
                commands.Edit();
                commands.Delete();
            });
        })
        .DataBinding(dataBinding =>
        {
            //Ajax binding
            dataBinding.Ajax()
                //Home.Index renders the grid initially
            .Select("_IndexAjax", "Paragraf")
                //Home.Insert inserts a new data record
            .Insert("_InsertAjax", "Paragraf")
                //Home.Update updates an existing data record
            .Update("_UpdateAjax", "Paragraf")
                //Home.Delete deletes an existing data record
            .Delete("_DeleteAjax", "Paragraf");
        })
        .DataKeys(dataKeys => dataKeys.Add(c => c.ParagrafID))
        .ToolBar(commands => commands.Insert())
        .Editable(editing => editing
                .Mode(GridEditMode.InLine))
        .Pageable()
        .Sortable()
        .Filterable()
        .Groupable()
 )
ViewModel
public class ParagrafParentViewModel
{
    public virtual int ParagrafID { get; set; }
    public virtual int ParagrafParent { get; set; }
    public virtual string ParagrafNazwa { get; set; }
}
EditorTemplates -> Paragrafy.cshtml
@(
    Html.Telerik().DropDownList()
            .Name("Paragrafy")
            .DataBinding(binding => binding.Ajax().Select("_AjaxParentParagrafLoading", "Paragraf"))
)

Im sure u got the idea but it is not working :). Can u show me the way where i make mistake ? how make selected when edit and take values to the update :) Tx for help.
Tags
General Discussions
Asked by
Tuinel
Top achievements
Rank 1
Share this question
or