2

私は KENDO UI に本当に慣れていません。また、剣道で VB.Net を使用していて、翻訳が少し奇妙であるため、少し混乱しています。

次のように、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 #' /> &nbsp;<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 Call から値を返しています。その値を取得し、ページ上の別の div を、AJAX 呼び出しの Success イベントからの注文合計で更新できるようにする必要がありますが、このイベントをインターセプトする方法を判断できません。

基本的に、このグリッドには注文された品目が表示され、ページの下部に注文合計が表示されます。注文の削除されたアイテムから戻ったときに、コントローラーから返された値から合計を更新したいと思います。これが理にかなっていることを願っています...

コントローラ

    <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
4

1 に答える 1

5

requestEndイベントを使用できます。サーバーの応答が返されたときに発生します。

于 2013-01-15T07:22:08.683 に答える