easyUI 节点树选择
定义:
<input id="treeFFatherId" name="treeFFatherId" value="" style="width:320px;">
@*<input class="easyui-combotree" id="treeFFatherId" name="treeFFatherId"*@
@*data-options="url: '/Mes/PmcBillofMaterial/GetBomTree?id=1304',lines:true" style="width:170px;height:22px;" />*@
<img style="cursor: pointer; vertical-align: middle;" onclick="$('#treeFFatherId').combotree('clear');"
alt="清空父节点" title="清空父节点" src="~/Content/themes/icon/edit-clear.png" />
打开新增界面时,初始化控件栏
onLoad: function () {
//节点树选择
$('#treeFFatherId').combotree({
url: '/Mes/PmcBillofMaterial/GetBomTree?id=' + row[0].Id,
required: false
});
},
后台JSON格式:
public ActionResult GetBomTree(string id)
{
int TopId = string.IsNullOrEmpty(id) == true ? : Convert.ToInt32(id); List<vPmcBillofMaterial> list = _vPmcBillofMaterialService.Find(t => t.TopId == TopId).ToList(); System.Text.StringBuilder str = new System.Text.StringBuilder();
if (list.Count > )
{
DataTable dt = DatabaseConvert.ListToDataTable<vPmcBillofMaterial>(list);
if (dt != null)
{
str.Append(Recursion(dt, ));
str = str.Remove(str.Length - , );
}
}
return Content(str.ToString());
}
///递归:
private string Recursion(DataTable dt, object parentId)
{
System.Text.StringBuilder sbJson = new System.Text.StringBuilder();
DataRow[] rows = dt.Select("FatherId = " + parentId);
if (rows.Length > )
{
sbJson.Append("[");
for (int i = ; i < rows.Length; i++)
{
string childString = Recursion(dt, rows[i]["Id"]);
if (!string.IsNullOrEmpty(childString))
{
//comboTree必须设置【id】和【text】,一个是id一个是显示值
sbJson.Append("{\"id\":\"" + rows[i]["Id"].ToString() + "\",\"ParentId\":\"" + rows[i]["FatherId"].ToString() + "\",\"MaterialId\":\"" + rows[i]["MaterialId"].ToString() + "\",\"UpdateBy\":\"" + rows[i]["UpdateBy"].ToString() + "\",\"UpdateTime\":\"" + rows[i]["UpdateTime"].ToString() + "\",\"text\":\"" + rows[i]["ChildK3MaterialNumber"].ToString() + "(" + rows[i]["ChildMaterialName"].ToString() + ")" + "\",\"children\":");
sbJson.Append(childString);
}
else
sbJson.Append("{\"id\":\"" + rows[i]["Id"].ToString() + "\",\"ParentId\":\"" + rows[i]["FatherId"].ToString() + "\",\"MaterialId\":\"" + rows[i]["MaterialId"].ToString() + "\",\"UpdateBy\":\"" + rows[i]["UpdateBy"].ToString() + "\",\"UpdateTime\":\"" + rows[i]["UpdateTime"].ToString() + "\",\"text\":\"" + rows[i]["ChildK3MaterialNumber"].ToString() + "(" + rows[i]["ChildMaterialName"].ToString() + ")" + "\"},");
}
sbJson.Remove(sbJson.Length - , );
sbJson.Append("]},");
}
return sbJson.ToString();
}
完整dialog
function AddBomNode()
{
var row = $("#ui_grid1").datagrid("getChecked");
if (row.length < 1) {
$.show_alert("提示", "请先勾选要添加节点的物料主文件");
return;
}
if (row.length > 1) {
$.show_alert("提示", "不允许批量添加节点");
$("#ui_grid1").datagrid('clearSelections').datagrid('clearChecked');
return;
}
$("<div/>").dialog({
id: "ui_PmcBillofMaterial_bom_add_dialog",
href: "/Mes/PmcBillofMaterial/BomNodeAdd",
title: "新建",
height: 300,
width: 600,
modal: true,
buttons: [{
id: "ui_PmcBillofMaterial_bom_add_btn",
text: '保 存',
iconCls: 'icon-save',
handler: function () {
$("#BomNodeAddForm").form("submit", {
url: "/Mes/PmcBillofMaterial/AddBomNode",
onSubmit: function (param) {
//注:加个F标记,防冲突
//param.FId = $("#hidid").val();
var parentid = $("#treeFFatherId").combotree("getValues").toString();
param.FFatherId = parentid;
param.FTopId = row[0].Id; //物料ID
param.FMaterialId = $("#hidFMaterialId").val(); //物料ID
param.FBomQty = $("#txtFBomQty").val();
param.FLossRate = $("#txtFLossRate").val();
param.FBomState = $("#selFBomState").val();
param.FBomInfoState = $("#txtFBomInfoState").val();
//param.FWorkshop = $("#txtFWorkshop").val();
//param.FWarehouse = $("#txtFWarehouse").val(); param.FRemark = $("#txtFRemark").val();
//param.FIsEnabled = document.getElementById("rbFIsEnabled").checked; if ($(this).form('validate')) {
$('#ui_PmcBillofMaterial_bom_add_btn').linkbutton('disable');
return true;
}
else {
$('#ui_PmcBillofMaterial_bom_add_btn').linkbutton('enable'); //恢复按钮
return false;
}
},
success: function (data) {
var dataJson = eval('(' + data + ')');
if (dataJson.success) {
$("#ui_PmcBillofMaterial_bom_add_dialog").dialog('destroy');
$.show_alert("提示", dataJson.msg);
$("#ui_grid2").datagrid("reload").datagrid('clearSelections').datagrid('clearChecked');
$("#ui_grid3").datagrid("reload").datagrid('clearSelections').datagrid('clearChecked');
} else {
$('#ui_PmcBillofMaterial_bom_add_btn').linkbutton('enable');
$.show_alert("提示", dataJson.msg);
}
//$("#bomTree").tree('reload', parentId.target);
$("#bomTree").tree('reload');
}
});
}
}, {
text: '取 消',
iconCls: 'icon-cancel',
handler: function () {
$("#ui_PmcBillofMaterial_bom_add_dialog").dialog('destroy');
}
}],
//打开新增界面时,初始化控件栏
onLoad: function () {
//$("#hidid").val(row[0].Id);
//如果节点为空,则默认物料ID为当前物料主文件选中行;
var roots = $('#bomTree').tree('getRoots');
if (roots.length <= 0) {
var strMaterial = row[0].K3MaterialNumber + '(' + row[0].MaterialName + ')';
$('#hidFMaterialId').val(row[0].Id);
$('#txtFMaterialId').val(strMaterial);
$('#txtFMaterialId').focus();
} else { $('#txtFBomQty').focus(); } //节点树选择
$('#treeFFatherId').combotree({
url: '/Mes/PmcBillofMaterial/GetBomTree?id=' + row[0].Id,
required: false
});
},
onClose: function () {
$("#ui_PmcBillofMaterial_bom_add_dialog").dialog('destroy'); //销毁dialog对象
}
});
}
easyUI 节点树选择的更多相关文章
- 基于EasyUi ComBotree树修改 父节点选择问题
本人在使用 Easy UI 期间发现了一个不太适合项目的bug,可能也不算bug把 . 毕竟不同项目背景 取舍不同. 我在做网元树选择的时候 发现当选取父节点后,子节点都会被选择 返回 .但是如 ...
- easyui 获取树的平级根节点的父节点&选择性展示树的一个根节点
1.easyui的树的根节点一般是几个平级的,怎样获取这些父节点的id? 可以将获取到的平级根节点放在一个数组中 var roots=[]; roots=$("#tree1").t ...
- Jquery EasyUI Combotree只能选择叶子节点且叶子节点有多选框
Jquery EasyUI Combotree只能选择叶子节点且叶子节点有多选框 Jquery EasyUI Combotree单选框,Jquery EasyUI Combotree只能选择叶子节点 ...
- 基于MVC4+EasyUI的Web开发框架经验总结(2)- 使用EasyUI的树控件构建Web界面
最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开发框架保持一致,而在Web上,我主要采用EasyUI的前端界面处理技术,走MVC的技术路线,在重 ...
- 使用EasyUI的树控件构建Web界面
最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开发框架保持一致,而在Web上,我主要采用EasyUI的前端界面处理技术,走MVC的技术路线,在重 ...
- 数据网格和树-EasyUI Datagrid 数据网格、EasyUI Propertygrid 属性网格、EasyUI Tree 树、EasyUI Treegrid 树形网格
EasyUI Datagrid 数据网格 扩展自 $.fn.panel.defaults.通过 $.fn.datagrid.defaults 重写默认的 defaults. 数据网格(datagrid ...
- (转)基于MVC4+EasyUI的Web开发框架经验总结(2)- 使用EasyUI的树控件构建Web界面
http://www.cnblogs.com/wuhuacong/p/3669575.html 最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开 ...
- VUE实现Studio管理后台(七):树形结构,文件树,节点树共用一套代码NodeTree
本次介绍的内容,稍稍复杂了一点,用VUE实现树形结构.目前这个属性结构还没有编辑功能,仅仅是展示.明天再开一篇文章,介绍如何增加编辑功能,标题都想好了.先看今天的展示效果: 构建树必须用到递归,使用s ...
- cocos2dx3.4 导出节点树到XML文件
l利用cocostudio做UI和场景时,经常要去获取某个节点,cocostudio2.1开始加入了文件的概念,可以创建场景,节点,层等文件,把公用的东西创建到文件里,然后把这个文件拖到场景里使用,达 ...
随机推荐
- redis之常用Set和ZSet命令
redis五种数据类型:String,Hash,List,Set,ZSet.五种数据类型各有优点,各司其职.最后两种数据类型Set和ZSet基本上是一种,ZSet就是给Set加了个排序而已(相当于加了 ...
- SprimgMVC学习笔记(四)—— @RequestMapping
一.URL路径映射 @RequestMapping(value="item")或@RequestMapping("/item") 当value的值是数组时,可以 ...
- pycharm、idea 2018软件安装教程
Python3.7安装: https://www.jb51.net/article/146326.htm pycharm软件: https://www.jianshu.com/p/cf77d74bef ...
- Newtonsoft.Json 自定义序列化格式转化器
public static class JsonHelper { static JsonHelper() { Newtonsoft.Json.JsonSerializerSettings settin ...
- 修改jupyter notebook的默认浏览器
1.打开命令行 2.输入jupyter notebook --generate-config 3.显示出jupyter_notebook_config.py 文件所在的目录.按文件目录找到这个文件. ...
- 6-----Scrapy框架中Item Pipeline用法
当Item 在Spider中被收集之后,就会被传递到Item Pipeline中进行处理 每个item pipeline组件是实现了简单的方法的python类,负责接收到item并通过它执行一些行为, ...
- 转 [Error]EOL while scanning string literal
https://blog.csdn.net/orangleliu/article/details/38943749 项目中有个定时任务,每天取到一些表数据传到一个外部接口,但是最近总是有异常,今天查了 ...
- Redis:存储对象的两种方式(序列化和json字符串)
方式一:序列化操作 public class SerializeUtil { /* * 序列化 * */ public static byte[] serizlize(Object ...
- git知识点总结
集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器.集中式版本控制系统最大的 ...
- Python 元组 (tuple)
作者博文地址:https://www.cnblogs.com/liu-shuai/ Python的元组与列表类似,同样可通过索引访问,支持异构,任意嵌套.不同之处在于元组的元素不能修改.元组使用小括号 ...