asp.net 第三方UI控件 Telerik KendoUI 之 TreeVIew 的用法记录
一、前台显示
备注:一次性取出所有节点
function loadTreeData() {
$.ajax({
type: 'POST',
url: '@(Html.UrlHref("ScriptSite", "/FilesManager/MyFiles/GetFolderTree"))',
data: {},
success: function (result) {
if (result) {
inlineDefault = new kendo.data.HierarchicalDataSource({
data: eval(result),
schema: {
model: {
children: "Items"
}
}
});
$("#treeviewFolder").kendoTreeView({
dataSource: inlineDefault,
change: onTreeViewChange,
dataTextField: ["Text"]
});
}
else {
}
},
error: function (err) {
window.alert(err);
}
});
}
二、后台实现
1、获取树的主方法
public string GetFolderTree()
{
List<Cust_TreeViewItemModel> lstNodes = new FileManageLogic().GetMyFolderTree(CurrentUser.Id);
string strResult = Newtonsoft.Json.JsonConvert.SerializeObject(lstNodes);
return strResult;
}
根据条件获得树型控件里的所有需要的数据
public List<Cust_TreeViewItemModel> GetMyFolderTree(Guid userId)
{
List<Cust_TreeViewItemModel> lstResult = new List<Cust_TreeViewItemModel>();
dvaContext context = new dvaContext();
List<es_data_path_mini> lstPaths = context.Database.SqlQuery<es_data_path_mini>("select ID,PID,SEQ,D_PATH from es_data_path where createuserid='" + userId.ToString() + "'").ToList();
GetKendoTree(lstPaths, lstResult, context, userId);
return lstResult;
}
递归实现父子级绑定的关系
private void AddChildKendoTree(List<Cust_TreeViewItemModel> lstTree, es_data_path_mini currentPath, List<es_data_path_mini> lstPaths, bool isFirstLevel)
{
Cust_TreeViewItemModel currentTreeNode = new Cust_TreeViewItemModel();
currentTreeNode.Text = currentPath.D_PATH;
currentTreeNode.Id = currentPath.ID.ToString();
currentTreeNode.Items = null;
currentTreeNode.ParentId = currentPath.PID.ToString();
if (isFirstLevel)
{
currentTreeNode.Expanded = true;
}
else
{
currentTreeNode.Expanded = false;
}
currentTreeNode.Remarks = "";
currentTreeNode.spriteCssClass = "folder";
if (currentTreeNode.Items == null)
{
currentTreeNode.Items = new List<Cust_TreeViewItemModel>();
}
List<es_data_path_mini> lstChildPath = lstPaths.Where(c => c.PID == currentPath.ID).ToList();
if (lstChildPath != null && lstChildPath.Any())
{
currentTreeNode.HasChildren = true;
foreach (var path in lstChildPath)
{
AddChildKendoTree(currentTreeNode.Items, path, lstPaths, false);
}
}
else
{
currentTreeNode.HasChildren = false;
}
if (currentTreeNode.Items.Count == )
{
currentTreeNode.Items = null;
}
lstTree.Add(currentTreeNode);
}
三、技巧
1、根据数据里的id获得当前记录(主键一定要用全小写的id,全部小写,我为什么这么强调?!因为我在这个问题上怀疑人生了一个多小时)
var barDataItem = treeview.dataSource.get(currentSelectedId);
2、根据当前记录的uid获得当前记录的node,下面的barElement 已经是一个node类型的值。
var barElement = treeview.findByUid(barDataItem.uid);
3、根据一个node获得它绑定的数据的id值:
('#treeviewFolder').data('kendoTreeView').dataItem(node).id
4、根据一个node获取它绑定的数据的Text值:
$('#treeviewFolder').data('kendoTreeView').dataItem(node).Text
5、根据一个node获取它的父级node
treeview, treeview.parent(node)
6、自动选中treeView上的某一个节点
var treeView = $('#treeviewFolder').data('kendoTreeView');
var data = treeView.dataSource.get(id);
var selectitem = treeView.findByUid(data.uid);
treeView.select(selectitem);
7、选中第一个节点
var el = $('#' + treeId);
var tree = el.data('kendoTreeView');
var firstNode = el.find('.k-first');
tree.select(firstNode);
asp.net 第三方UI控件 Telerik KendoUI 之 TreeVIew 的用法记录的更多相关文章
- UI控件Telerik UI for Silverlight发布R2 2019|附下载
Telerik UI for Silverlight包含了超过100个能用于纯Silverlight应用程序中或能作为现有ASP.NET应用程序的一部分的UI控件.通过与我们的WPF控件共享一个相同的 ...
- UI控件Telerik UI for WinForms发布R1 2019|附下载
Telerik UI for WinForms拥有适用Windows Forms的110多个令人惊叹的UI控件.所有的UI for WinForms控件都具有完整的主题支持,可以轻松地帮助开发人员在桌 ...
- 移动UI控件Telerik UI for Xamarin发布R2 2019|引入Map控件
Telerik UI for Xamarin是一个构建跨平台移动应用程序的原生UI.Telerik UI for Xamarin使用Xamarin.Forms技术,它可以让开发人员从一个单一的共享C# ...
- UI控件Telerik UI for WPF发布R2 2019|附下载
Telerik UI for WPF拥有超过100个控件来创建美观.高性能的桌面应用程序,同时还能快速构建企业级办公WPF应用程序.UI for WPF支持MVVM.触摸等,创建的应用程序可靠且结构良 ...
- UI控件Telerik UI for ASP.NET MVC全新发布R2 2019 SP1
Telerik UI for ASP.NET MVC拥有使用JavaScript和HTML5构建网站和移动应用所需的70+UI部件,来满足开发者的各种需求,提供无语伦比的开发性能和用户体验.它主要是针 ...
- ASP.NET中Button控件的CommandName和CommandArgument属性用法
在Repeater中的使用: <asp:Repeater ID="rptActionList" runat="server" OnItemCommand= ...
- AndroidUI开源组件库BottomView 第三方自定义UI控件
这里分享一个Android的非常经典实用而且简单方便的第三方UI控件库:BottomView(小米的米UI也用到了这个) 原文 http://blog.csdn.net/opzoonzhuzheng ...
- C# Winform 跨线程更新UI控件常用方法汇总(多线程访问UI控件)
概述 C#Winform编程中,跨线程直接更新UI控件的做法是不正确的,会时常出现“线程间操作无效: 从不是创建控件的线程访问它”的异常.处理跨线程更新Winform UI控件常用的方法有4种:1. ...
- C# Winform 跨线程更新UI控件常用方法总结(转)
出处:http://www.tuicool.com/articles/FNzURb 概述 C#Winform编程中,跨线程直接更新UI控件的做法是不正确的,会时常出现“线程间操作无效: 从不是创建控件 ...
随机推荐
- Java_注解_01_注解(Annotation)详解
一.注解的概念 Annotation(注解)是插入代码中的元数据(元数据从metadata一词译来,就是“描述数据的数据”的意思),在JDK5.0及以后版本引入.它可以在编译期使用预编译工具进行处理, ...
- Android 之异步加载LoaderManager
LoaderManager: Loader出现的背景: Activity是我们的前端页面展现,数据库是我们的数据持久化地址,那么正常的逻辑就是在展示页面的渲染页面的阶段进行数据库查询.拿到数据以后才展 ...
- 最小覆盖_KEY
最小覆盖(cover)..线段树 [题目描述] 给定 N 个区间[Li,Ri],需要你按照顺序选出一个区间序列使得[1,M]完全被覆盖.并且在选出来的序列中,某个区间[a,b]之前必须保证[1,a]都 ...
- MySQL_日期函数汇总
如果转载,请注明博文来源: www.cnblogs.com/xinysu/ ,版权归 博客园 苏家小萝卜 所有.望各位支持! 关于MySQL日期时间函数,每回总 ...
- 【转】独立游戏如何对接STEAM SDK
独立开发者在对接STEAM SDK之前 首先得先登上青睐之光,也就是我们俗称的"绿光" 一般要先对接G胖家的SDK,然后提交版本,最后等待审核... 我本身是unity 开发,对C ...
- 使用wsimport和JAX-WS调用Web Service接口
本文简单举例说明如何使用wsimport工具和JAX-WS API调用Web Service接口.此方法的优点:使用JDK自带的工具和API接口,无需依赖第三方库. JDK版本:1.8.0_141开发 ...
- 规划自己的生活,从使用GTD时间管理法开始
前言 为了不再浪费时间,不在茫然度过每一天,我为自己应用了GTD时间管理法,之前并不知道这种方法,实际和我自己定制的也差不太多,下面说说这个方法. 一.GTD时间管理 时间管理法有很多,而GTD( ...
- fiddler 监听HttpClient发送的请求
用HttpClient模拟浏览器发送请求,设置一下代理httpClient.getHostConfiguration().setProxy("127.0.0.1", 8888);
- 在前端页面对easyui中的datagrid与jqgrid加载后的数据进行操作
因为项目的需求,需要在grid中加载数据后再在前端页面执行操作,所以在easyui中的grid与jqgrid都进行了测试和操作: eayui中grid数据的操作: //构造集合对象 var list ...
- Ubuntu下的终端多标签切换快捷键
ubuntu下由于常在终端下工作,也同样需要在一个终端窗口下开启多个标签方便日常开发工作(vim党,尽量避免使用鼠标) 方法一: alt+1 alt+2 alt+3 方法二: ctrl + pageU ...