我对 KENDO UI 真的很陌生,我也有点困惑,因为我将 VB.Net 与 Kendo 一起使用并且翻译有点奇怪,所以所有这些都让我们来回答这个问题。
我在 ASP.Net MVC 页面中使用 Kendo Grid,如下所示:
@(Html.Kendo().Grid(Of Portal.ProductList).Name("Grid2") _
.DataSource(Function(ds) ds.Ajax() _
.Model(Sub(model) model.Id(Function(p) p.ItemID)) _
.Read(Function(read) read.Action("GetAjaxItems", "ShoppingCartItems").Data("gridParms")) _
.Destroy(Function(destroy) destroy.Action("DeleteAjaxItems", "ShoppingCartItems", New With {.ShoppingCartID = ViewData("ShoppingCartID")})) _
) _
.Columns(Function(modelItem) modelItem.Bound(Function(p) p.ItemCodeOrdering).Title("Item")) _
.Columns(Function(modelItem) modelItem.Bound(Function(p) p.Description)) _
.Columns(Function(modelItem) modelItem.Bound(Function(p) p.Quantity).Title("Quantity").ClientTemplate("<input type='text' style='width:40px;' id='QTY#= ItemID #' value='#= Quantity #' /> <input type='button' id='UPD#= ItemID#' value='Update' onclick='updateItemQty(this)' /> ")) _
.Columns(Function(modelItem) modelItem.Bound(Function(p) p.Price).Title("Unit Price").ClientTemplate("<div id='price#=ItemID#'>$#=Price.toFixed(2)#</div>")) _
.Columns(Function(modelItem) modelItem.Bound(Function(p) p.Quantity).Title("Total Price").ClientTemplate("<div id='total#=ItemID#'>$#= (Price * Quantity).toFixed(2) #</div>")) _
.Columns(Function(modelItem) modelItem.Bound(Function(p) p.ItemID)) _
.Columns(Function(modelItem) modelItem.Command(Sub(cmd) cmd.Destroy()))
)
我正在从 Destroy Ajax 调用返回一个值。我需要能够检索该值并使用来自 AJAX 调用的 Success 事件的订单总数更新页面上的另一个 div,但我无法确定如何拦截此事件。
本质上,此网格显示已订购的订单项,并且在页面底部有一个订单总数。当我们从订单上的已删除项目返回时,我想从控制器返回的值中更新总数。我希望这是有道理的...
控制器
<HttpPost()>
Function DeleteAjaxItems(<DataSourceRequest()> request As DataSourceRequest, Optional ShoppingCartID As Integer = 0, Optional ItemID As Integer = 0) As ActionResult
Dim sci = db.ShoppingCartItems.Where(Function(c) c.ShoppingCartID = ShoppingCartID And c.ItemID = ItemID)
If Not IsNothing(sci.FirstOrDefault) Then
db.ShoppingCartItems.Remove(sci.FirstOrDefault)
db.SaveChanges()
End If
Dim ShoppingCartItems = db.ShoppingCartItems.Include(Function(s) s.ShoppingCart).Where(Function(s) s.ShoppingCartID = ShoppingCartID)
Dim ShoppingCartItemsTotal = ShoppingCartItems.Sum(Function(item) item.DealerPrice * item.Quantity)
Return New JsonResult With {.Data = Format(ShoppingCartItemsTotal, "c")}
'Return Nothing
End Function