Telerik ASP.NET MVC2网格删除功能与复合键

时间:2011-01-13 12:33:30

标签: asp.net-mvc-2 telerik-grid

我有一个带有复合键的网格:OrderId,ItemID。 当我更新网格时 - public ActionResult UpdateItemGridAjax(int OrderID, string ItemID)从网格中获取两个值。

当我删除一行时,我只得到第一行:

public ActionResult DeleteItemGridAjax(int OrderID, string ItemID)

为什么会发生这种情况?如何获取已删除行的ItemId值?

网格定义:

<%= 
                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("Upadte");
                        })

1 个答案:

答案 0 :(得分:3)

第二个键以Id而不是ItemID的形式返回。有一种方法可以在代码中定义它:

       .DataKeys(dataKeys =>
            {
              dataKeys.Add(e => e.OrderID).RouteKey("OrderID");
              dataKeys.Add(e => e.ActivityID).RouteKey("ActivityID");
            })

这会让你有更好的机会获得你期望的东西。