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

[Solved] Update data from Combo Box in Grid

1 Answer 78 Views
Grid
This is a migrated thread and some comments may be shown as answers.
This question is locked. New answers and comments are not allowed.
Howard
Top achievements
Rank 1
Howard asked on 07 Feb 2012, 05:46 AM
Hi support,

Trying to use combox inside grid for edit and add option. I have added the comboBox but doesn't update. My code is as below.

------------------------------------
Partial View
-------------------------------------
@model  PFLMMSBModel
<script type="text/javascript">
    function onEdit(e) {
        $(e.form).find('#Make').data('tComboBox').select(function (dataItem) {
            return dataItem.Value == e.dataItem['MAKE_ID'];
        });
        $(e.form).find('#Model').data('tComboBox').select(function (dataItem) {
           return dataItem.Value == e.dataItem['MODEL_ID'];
       });
}
</script>

@(Html.Telerik().Grid<PFLMMSBModel>()
                .Name("PFLMMSB")
                .Sortable(sorting => sorting.Enabled(true))
                .Filterable(filtering => filtering.Enabled(true))   
                .Pageable(paging => paging.Enabled(true).PageSize(13)).Footer(true)
                .DataBinding(dataBinding => dataBinding.Ajax().Select("_PFLMMSB", "ReferenceFiles")
                                                             .Update("_PFLMMSBEdit", "ReferenceFilesEdit"))
                                                                                
                .Reorderable(reorder => reorder.Columns(true))
                .Columns(columns =>
                {
                    columns.Bound(s => s.MAKE_ID).Title("Make").ClientTemplate("<#=MAKE_DESCRIPTION #>");
                    columns.Bound(s => s.MODEL_ID).Title("Model").ClientTemplate("<#=MODEL_DESCRIPTION #>");
                                       
               columns.Command(commands =>
                   {
                       commands.Edit().ButtonType(GridButtonType.Text).HtmlAttributes(new { @style = "color: #333;" });

                   }).Width(200).Title("Commands");
                })
                .Editable(editing => editing.Mode(GridEditMode.InLine))  
            .ClientEvents(events => events
                .OnEdit("onEdit")
                ).HtmlAttributes(new { @style = "color: black;" })   
                              
)

--------------------------------------------------------------------------------------
Editor Templates
----------------

@(Html.Telerik().ComboBox()
        .Name("Make")
        .AutoFill(true)
        .BindTo(new SelectList((System.Collections.IEnumerable)ViewBag.Makes, "MAKE_ID", "MAKE_DESCRIPTION"))
                .Filterable(filtering =>
                {
                    filtering.FilterMode(AutoCompleteFilterMode.StartsWith);
                })
                .HighlightFirstMatch(true)
)

@(Html.Telerik().ComboBox()
        .Name("Model")
        .AutoFill(true)
        .BindTo(new SelectList((System.Collections.IEnumerable)ViewBag.Models, "MODEL_ID", "MODEL_DESCRIPTION"))
                .Filterable(filtering =>
                {
                    filtering.FilterMode(AutoCompleteFilterMode.StartsWith);
                })
                .HighlightFirstMatch(true)
)

------------------------------------------------------
Controller
--------------

[AcceptVerbs(HttpVerbs.Post)]
        [GridAction]
        public ActionResult _PFLMMSBEdit(int Id, int Make, int Model)
        {
            //Save data first
            EditReferenceFiles _editReferenceFiles = new EditReferenceFiles();

            PFLMMSBModel _mmsb = _editReferenceFiles.PFLMMSBEdit(Id).First();

            _mmsb.MAKE_ID = Make;
            _mmsb.MODEL_ID = Model;
                       
            TryUpdateModel(_mmsb);
                                  
            if (_editReferenceFiles.PFLMMSBSave(Id, _mmsb))
            {
                //render the save data again
                ReferencesFiles _referencesFiles = new ReferencesFiles();
                var _pFLMMSBEdit = _referencesFiles.MMSB();
                return PartialView(new GridModel { Data = _pFLMMSBEdit });
            }
            else
            {
                return Json(new
                {
                    Success = false

                });
            }
        }
---------------------------------------------
model
--------------------
[MetadataType(typeof(PFLMMSBModel))]
    public class PFLMMSBModel
    {
        public int MMSB_ID { get; set; }
        public string MMSB_USER_CODE { get; set; }
        public string MMSB_DESCRIPTION { get; set; }

        [UIHint("_Make"), Required]
        public int? MAKE_ID { get; set; }
        public string MAKE_USER_CODE { get; set; }
        public string MAKE_DESCRIPTION { get; set; }

        [UIHint("_Model"), Required]
        public int? MODEL_ID { get; set; }
        public string MODEL_USER_CODE { get; set; }
        public string MODEL_DESCRIPTION { get; set; }
--------------------------------------------------------------

public List<PFLMMSBModel> PFLMMSBEdit(Int32 Id)
         {
             var context = new AUSFLEETEntities();
             {
                 var _mmsb = from m in context.PFL_MMSB_VIEW

                                 select new PFLMMSBModel
                                 {
                                     MMSB_ID = m.MMSB_ID,
                                     MMSB_USER_CODE = m.MMSB_USER_CODE,
                                     MMSB_DESCRIPTION = m.MMSB_DESCRIPTION,
                                     MAKE_ID = m.MAKE_ID,
                                     MAKE_USER_CODE = m.MAKE_USER_CODE,
                                     MAKE_DESCRIPTION = m.MAKE_DESCRIPTION,
                                     MODEL_ID = m.MODEL_ID,
                                     MODEL_USER_CODE = m.MODEL_USER_CODE,
                                     MODEL_DESCRIPTION = m.MODEL_DESCRIPTION
                                    
                                 };
                 return _mmsb.ToList();
             }
         }

         public bool PFLMMSBSave(Int32 Id, PFLMMSBModel _PFLMMSBModel)
         {
             using (var context = new AUSFLEETEntities())
             {
                 try
                 {
                     var _mmsb = context.PFL_MMSB_VIEW.Where(m => m.MMSB_ID == Id).First();
                                     _mmsb.MMSB_ID = _PFLMMSBModel.MMSB_ID;
                                     _mmsb.MMSB_USER_CODE = _PFLMMSBModel.MMSB_USER_CODE;
                                     _mmsb.MMSB_DESCRIPTION = _PFLMMSBModel.MMSB_DESCRIPTION;
                                     _mmsb.MAKE_ID = _PFLMMSBModel.MAKE_ID;
                                     _mmsb.MAKE_USER_CODE = _PFLMMSBModel.MAKE_USER_CODE;
                                     _mmsb.MAKE_DESCRIPTION = _PFLMMSBModel.MAKE_DESCRIPTION;
                                     _mmsb.MODEL_ID = _PFLMMSBModel.MODEL_ID;
                                     _mmsb.MODEL_USER_CODE = _PFLMMSBModel.MODEL_USER_CODE;
                                     _mmsb.MODEL_DESCRIPTION = _PFLMMSBModel.MODEL_DESCRIPTION;                    

                     context.SaveChanges();

                     return true;
                 }

                 catch (Exception ex)
                 {
                     string error = ex.Message;
                     return false;
                 }
             }
         }

1 Answer, 1 is accepted

Sort by
0
Daniel
Telerik team
answered on 09 Feb 2012, 05:02 PM
Hi Niroj,

The ComboBoxes should have the same name as the model's property in order for the value to be mapped correctly e.g.
@(Html.Telerik().ComboBox()
        .Name("MAKE_ID")
    .....


Kind regards,
Daniel
the Telerik team
Sharpen your .NET Ninja skills! Attend Q1 webinar week and get a chance to win a license! Book your seat now >>
Tags
Grid
Asked by
Howard
Top achievements
Rank 1
Answers by
Daniel
Telerik team
Share this question
or