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开始加入了文件的概念,可以创建场景,节点,层等文件,把公用的东西创建到文件里,然后把这个文件拖到场景里使用,达 ...
随机推荐
- freemarker 遍历树形菜单
<ul class="nav sidebar-menu"> <!--Dashboard--> <!-- 定义遍历方法 --> <#macr ...
- C语言实践
初学者往往有这样的困惑: 教程也阅读了,知识点也理解了,但是真正编写代码起来无从下手. 连一些基本的小程序都不能完成. 究其原因,就是缺少实践,没有培养起编程思维. 没有处理相关问题的经验. 编程能力 ...
- [USACO18JAN]Cow at Large G(树形DP)
P4186 [USACO18JAN]Cow at Large G(树形DP) Luogu4186 设dp[i]表示i点需要放多少个农民.则有 \(if(near[i]-dep[i]<=dep[i ...
- P4289 [HAOI2008]移动玩具
传送门 广搜 4*4 的方阵只有 0 和 1 显然可以状态压缩 (如样例的开始状态压缩后就是1111000011100010) 为了加快速度用了双向广搜(顺便学了一下双向广搜) 双向广搜顾名思义 就是 ...
- ubuntu php 连接sql server
1.下载最新的freetds ,访问 http://www.freetds.org/, 或者在 ubuntu上用 wget ftp://ftp.freetds.org/pub/freetds/stab ...
- math.random()方法的使用
一:导言 以前总是被数字的范围正则搞的头大,在此总结了一下 二:用法 Math.random()函数返回0和1之间的伪随机数,可能为0,但总是小于1,[0,1) 生成n-m,包含n但不包含m的整数: ...
- js和jq中常见的各种位置距离之offset和offset()的区别(三)
offsetLeft:元素的边框的外边缘距离与已定位的父容器(offsetparent)的左边距离(不包括元素的边框和父容器的边框). offset().left:返回的是相对于当前文档的坐标,使用o ...
- 数据库迁移expdp impdp 与 OGg 搭建
1.long 字段的无法使用OGG 同步 2.clob字段的导入导出Bug , 生产使用network-link 导入导出太慢了,本地导入导出速度会快3到4倍 .但是测试环境的情况却相反 测试环境和生 ...
- webpack01
- c++ 封装线程库 2
1.2线程回收: 首先得知道线程的两个状态: Joinable Detached 简单理解,如果一个线程是joinable的状态,那么这样的线程,就必须使用pthread_join来回收,否则程序结束 ...