1

グリッドを部分的に配置し、データを渡し、グリッドをクライアントテンプレートにレンダリングするかどうかを指定する、グリッドビューごとに強く型付けされたモデルを作成したいと思います。

例えば:

--MODEL
    class ProductGridModel
    {
      public List<Products> Products{get;set;}
      public bool LoadAsChildGrid{get;set;}
      public string ParentGrid {get;set;}
    }
--VIEW
    @(Html.Kendo().Grid<Models.ProductGridModel>()
    {
        .Ajax()
        .Read(read => read.Action("GetProducts", "Products", new 
            { orderID=(@Model.LoadAsChildGrid)?"#=OrderID":@Model.OrderID }))
    ...
        .ToClientTemplate(@Model.LoadAsChildGrid)//!!!<-- This can't be done
        .Events(e => e.DataBound((@Model.LoadAsChildGrid)?"BaseGridOnDataBound('grdProducts_#=OrderID#')":""))
    }
--CONTROLLER
    public ActionResult GetProducts(int orderID, [DataSourceRequest] DataSourceRequest request)
    {          
        try
        {
            base.RequireAuthorization(xxxx.StockAdmin, orderID);
            List<Products> products= new ProductManagement().GetProductsByOrderID(orderID);
            return Json(products.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
        }
        catch (Exception e)
        {
            ModelState.AddModelError("", e.ToString());
            throw e;
        }
    }

オプションでToClientTemplateをレンダリングする方法はありますか?回避策がない場合、私が持っている唯一の代替手段は、カスタムHTmlHelperKendoGridBuilderを実装することです。

public virtual GridBuilder<T> Grid<T>() where T : class;

、現時点ではやりたくないです。グリッドを拡張して実装する必要がある場合に備えて、それをどのように行うべきかについてのステップバイステップガイドを探していました。どんな助けでもいただければ幸いです。

4

1 に答える 1

3

これを試して:

@{
 var grid = (Html.Kendo().Grid<Models.ProductGridModel>()
          ...
       );
}

@if(@Model.LoadAsChildGrid) {
  @grid.ToClientTemplate()
} else {
  @grid
}
于 2012-12-24T08:25:05.157 に答える