私はKendoTreeviewを持っています。私は MVC4 と KendoUI の最新のものを使用しています。私はSQLサーバーとC#も使用しています
「MyDB」というデータベースと、そのデータベースに「Products」という単一のテーブルがあるとします。
テーブル「製品」: ID -- int -- pk 名前 -- nvarchar(50) 親 -- int -- FK
製品にサブ製品を持たせたい...
わかりました、今私が持っているコントローラーで:
public JsonResult ProductsForTreeView(int? id)
{
var dataContext = new ProductsDBContext();
var products = from e in dataContext.Products
where ( id.HasValue ? e.Parent == id : e.Parent == 0)
select new
{
id = e.Id,
Name = e.Name,
hasChildren = e.Id
};
return Json(products , JsonRequestBehavior.AllowGet);
}
そしてビュー:
@(Html.Kendo().TreeView()
.Name("treeview")
.DataTextField("Name")
.HighlightPath(true)
.DataSource(dataSource => dataSource
.Read(read => read
.Action("ProductsForTreeView", "SiteMap")
)
)
)
これは機能し、ツリービューがすべてのノードの横に + を表示していることを除いて、ツリービューを正しく表示します(ALMOST!)...子があるかどうかに関係なく。
LINQ を変更するか、JavaScript を使用して、子要素のない "+" を削除する必要があります...
「+」のクラス名は「k-icon k-plus」です。
ツリービューがこの「+」をすべてのノードに追加しないようにするにはどうすればよいですか? 子を持つノードにのみ表示する必要があります。