定义:

<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 节点树选择的更多相关文章

  1. 基于EasyUi ComBotree树修改 父节点选择问题

    本人在使用 Easy UI 期间发现了一个不太适合项目的bug,可能也不算bug把 . 毕竟不同项目背景 取舍不同. 我在做网元树选择的时候  发现当选取父节点后,子节点都会被选择  返回  .但是如 ...

  2. easyui 获取树的平级根节点的父节点&选择性展示树的一个根节点

    1.easyui的树的根节点一般是几个平级的,怎样获取这些父节点的id? 可以将获取到的平级根节点放在一个数组中 var roots=[]; roots=$("#tree1").t ...

  3. Jquery EasyUI Combotree只能选择叶子节点且叶子节点有多选框

    Jquery EasyUI Combotree只能选择叶子节点且叶子节点有多选框 Jquery EasyUI Combotree单选框,Jquery EasyUI Combotree只能选择叶子节点 ...

  4. 基于MVC4+EasyUI的Web开发框架经验总结(2)- 使用EasyUI的树控件构建Web界面

    最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开发框架保持一致,而在Web上,我主要采用EasyUI的前端界面处理技术,走MVC的技术路线,在重 ...

  5. 使用EasyUI的树控件构建Web界面

    最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开发框架保持一致,而在Web上,我主要采用EasyUI的前端界面处理技术,走MVC的技术路线,在重 ...

  6. 数据网格和树-EasyUI Datagrid 数据网格、EasyUI Propertygrid 属性网格、EasyUI Tree 树、EasyUI Treegrid 树形网格

    EasyUI Datagrid 数据网格 扩展自 $.fn.panel.defaults.通过 $.fn.datagrid.defaults 重写默认的 defaults. 数据网格(datagrid ...

  7. (转)基于MVC4+EasyUI的Web开发框架经验总结(2)- 使用EasyUI的树控件构建Web界面

    http://www.cnblogs.com/wuhuacong/p/3669575.html 最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开 ...

  8. VUE实现Studio管理后台(七):树形结构,文件树,节点树共用一套代码NodeTree

    本次介绍的内容,稍稍复杂了一点,用VUE实现树形结构.目前这个属性结构还没有编辑功能,仅仅是展示.明天再开一篇文章,介绍如何增加编辑功能,标题都想好了.先看今天的展示效果: 构建树必须用到递归,使用s ...

  9. cocos2dx3.4 导出节点树到XML文件

    l利用cocostudio做UI和场景时,经常要去获取某个节点,cocostudio2.1开始加入了文件的概念,可以创建场景,节点,层等文件,把公用的东西创建到文件里,然后把这个文件拖到场景里使用,达 ...

随机推荐

  1. innodb的读写参数优化

    (1)    读取参数,global buffer pool以及 local buffer Innodb_buffer_pool_size,理论上越大越好,建议服务器50%~80%,实际为数据大小80 ...

  2. HTML用JS导出Excel的五种方法

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  3. phpSpreadSheet 中 使用的 一些坑

    如果是upupw,它 做了 安全限制...将 上传目录 写成 uploadfiles 等 才能 写进去.. 文件路径 也不要有 中文..很有可以能 下载时 找不到路径....这个太坑...

  4. [ZJOI2018]历史(LCT)

    这篇还发了洛谷题解 [Luogu4338] [BZOJ5212] 题解 题意 给出一棵树,给定每一个点的 \(access\) 次数,计算轻重链切换次数的最大值,带修改. 先考虑不带修改怎么做 假设 ...

  5. 初始 D2 Admin

    1.安装D2 admin 输入:npm install -g @d2-admin/d2-admin-cli 2.创建D2 项目 ,可以选择简洁版或者完整版 输入:d2 create 3.然后 进入创建 ...

  6. 绿豆蛙的归宿(Java)

    Description 随着新版百度空间的上线,Blog宠物绿豆蛙完成了它的使命,去寻找它新的归宿. 给出一个有向无环图,起点为1终点为N,每条边都有一个长度,并且从起点出发能够到达所有的点,所有的点 ...

  7. python 格式化时间含中文报错: 'locale' codec can't encode character '\u5e74'

    执行下面代码报错: UnicodeEncodeError: 'locale' codec can't encode character '\u5e74' in position 2: Illegal ...

  8. STL之vector(不定长数组)

    vector就是一个不定长数组,另外它把一些常用操作“封装”在了vector类型内部.例如,若a是一个vector,可以用a.size()读取它的大小,a.resize()改变大小,a.push_ba ...

  9. appium连接夜神模拟器方法总结

    使用appium连接模拟器前提条件:appium环境已经搭建完毕,搭建步骤请参考我的博客:appium手机自动化环境搭建 1.下载并安装夜神模拟器:https://www.yeshen.com/ 2. ...

  10. JedisCluster 链接redis集群

    先贴代码: <!-- redis客户端 --><dependency>  <groupId>redis.clients</groupId>  <a ...