定义:

<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. 圆环进度css

    看效果先:http://sandbox.runjs.cn/show/b6bmksvn 参考: jquery圆环百分比进度条制作 CSS clip:rect矩形剪裁功能及一些应用介绍 CSS clip: ...

  2. C语言利用指针排序与选择排序算法

    //读入字符串,并排序字符串 #include <stdio.h> #include <string.h> #define SIZE 81 #define LIM 20 #de ...

  3. C#面试题-递归

    有一组数1.1.2.3.5.8.13.21.34...,求第n个数是多少? public int Recursion (int n){ ){ ; } &&n<=){ ; } )+ ...

  4. Luogu P5201 [USACO19JAN]Shortcut 最短路树???

    最短路树...开眼界了...之前想也没想过.... 先跑出来1到每个点最短路,然后建树时要标记点的入度,否则会多连边...然后深搜时更新新答案就是 #include<cstdio> #in ...

  5. P3943 星空

    传送门 观察题目数据,发现 k ≤ 8 ,可能可以从这里入手解决问题 考虑状态压缩 但是我们每次操作都会让一连串的序列改变,而序列的每个状态都是必须要知道的 很麻烦,所以考虑如何把一段区间表示地简单一 ...

  6. django模型层 关于单表的增删改查

    关于ORM MTV或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库, 通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员 ...

  7. django文件配置

    先是 staticfile 文件配制 STATTCFILE=(os.path.join(BASE_DIR,'static'),) 然后是数据库配置  : DATABASES = { 'default' ...

  8. jquery深入学习

    样式操作: addclass();  //指定添加css类 removeclass();//移除指定css类 hasclass()://判断存不存在 toggleclass();//切换css类名,有 ...

  9. SQL 行转列的两种做法

    if object_id('tb')is not null drop table tbGocreate table tb(姓名 varchar(10),课程 varchar(10),分数 int)in ...

  10. SpringBoot2.0.3整合Quartz2.3.0实现定时任务

    转载:https://www.cnblogs.com/ealenxie/p/9134602.html 关于别人写的quartz学习的地址:https://blog.csdn.net/lkl_csdn/ ...