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

[Solved] AJAX Delete gets only 1 out of 2 key parameters

0 Answers 43 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.
dani
Top achievements
Rank 1
dani asked on 13 Jan 2011, 01:21 PM

When I Update a row in the grid  I get 2 parameters to the Update Function.
When I Delete a row, the 2nd parameter is NULL (although exists in the grid0

I have 2 questions:

a. why doesn't delete get both key parameters (OrderID, ItemID), and how can I make sure it gets it.
b. In Update function I Get the new values, how can I access the old values before update (in order to find the old item in the DB ?)

Thanks
Dani.

Grid Definition:
<%=
                Html.Telerik().Grid<ItemsInOrderPOCO>()
                
                    .Name("ItemsInOrderGrid")
                                    .DataKeys(dataKeys =>
                                    {
                                        dataKeys.Add(e => e.OrderID);
                                        dataKeys.Add(e => e.ItemID);
                                    })
                    .ToolBar(commands => commands.Insert())
                    .DataBinding(dataBinding =>
                        {
                        dataBinding.Ajax()    //Ajax binding
 
                .Select("SelectItemGridAjax", "Orders", new { OrderID = Model.myOrder.OrderID })
                .Insert("InsertItemGridAjax", "Orders", new { OrderID = Model.myOrder.OrderID })
                .Update("UpdateItemGridAjax", "Orders")
                .Delete("DeleteItemGridAjax", "Orders");
                        })
                    .Columns(c =>
                        {
                            c.Bound(o => o.ItemID);
                            c.Bound(o => o.OrderID).Column.Visible = false;
                            c.Bound(o => o.ItemDescription);
                            c.Bound(o => o.NumOfItems);
                            c.Bound(o => o.CostOfItem);
                            c.Bound(o => o.TotalCost);
                            c.Bound(o => o.SupplyDate);
                            c.Command(commands =>
                                {
                                    commands.Edit();
                                    commands.Delete();
                                }).Width(180).Title("?????");
                        })

Controller Functions:

[AcceptVerbs(HttpVerbs.Post)]
 [GridAction]
 public ActionResult UpdateItemGridAjax(int OrderID, string ItemID)
 {
     ItemsInOrder item = ordersRepository.FindItemByID(OrderID, ItemID);
      
     if (item != null)
     {
         ItemsInOrderPOCO itemPOCO = new ItemsInOrderPOCO(item);
         if (TryUpdateModel(itemPOCO))
         {
             ordersRepository.UpdateItem(ItemsInOrderPOCO.ItemConvert2EF(itemPOCO, item));
         }
     }
     List<ItemsInOrder> iList = ordersRepository.GetOrderItemsTK(OrderID).ToList();
     return View(new GridModel(ItemsInOrderPOCO.ListConvert(iList)));
 }
 
 [AcceptVerbs(HttpVerbs.Post)]
 [GridAction]
 public ActionResult DeleteItemGridAjax(int OrderID, string ItemID)
 {
     ItemsInOrder item = ordersRepository.FindItemByID(OrderID, ItemID);
 
     if (item != null)
     {
         ordersRepository.DeleteItem(item);
     }
 
     List<ItemsInOrder> iList = ordersRepository.GetOrderItemsTK(OrderID).ToList();
     return View(new GridModel(ItemsInOrderPOCO.ListConvert(iList)));
 }


Tags
Grid
Asked by
dani
Top achievements
Rank 1
Share this question
or