extjs 项目中技术要点摘录
2011-10-27 10:50
225 查看
1.利用Newtonsoft.Json.dll解析json数据
2.前台提交后台
3.grid增加button按钮事件
4. 遍历整个tree
5.点击tree节点,连动选中子节点和父节点
6.保存时遍历左右打勾节点
7.解决日历控件弹出宽度太小的问题
8.弹出加载数据的等待窗体
9.new一个对象弹出window
10.ext form自动加载数据
11. extjs+funsioncharts结合显示图表
12. 子grid选中一行到父grid,grid删除一行
13. editorgrid combobox 验证完成事件
[Serializable] public class User { public string id { get; set; } public string userid { get; set; } public string username { get; set; } public string password { get; set; } } List<User> users = JsonConvert.DeserializeObject<List<User>>(jsonData); foreach(User user in users) { }
2.前台提交后台
handler: function () { form.getForm().submit({ success: function (form, action) { window.location.href = 'Index.aspx'; }, failure: function () { Ext.Msg.alert('错误', "用户名或密码有错"); } }); } Ext.lib.Ajax.request( 'POST', 'UserManage.aspx', 'JurisdictionManage.aspx?nodeid=' + nodeid + '&userid=' + userid, {success: function(response){ Ext.Msg.alert('信息', response.responseText, function(){ window.location.href = 'UserManage.aspx'; }); },failure: function(){ Ext.Msg.alert("错误", "删除出错"); }}, 'data=' + Ext.util.JSON.encode(jsonArray) );
3.grid增加button按钮事件
{ header: '<b>操作</b>', dataIndex: 'text', align: 'center', sortable: true, width: 165, renderer: showbutton } function showbutton(value, cellmeta) { var returnStr = "<input class='btn' type='button' value='详细监测' onclick= 'buttonclick();'>"; return returnStr; } }); function buttonclick() { //window.location.href('modules/GridMonitor/GridMonitor.aspx?id='); //setActiveTab(1); top.Ext.getCmp(0).setActiveTab(2); }
4. 遍历整个tree
//先清空 getAllRoot(tree); var result = response.responseText; //有权限的赋值 var strs = result.split('&'); for(var i = 0; i < strs.length -1 ; i ++) { var n = tree.getNodeById(strs[i]); n.parentNode.attributes.checked = true; n.parentNode.ui.checked = true; n.parentNode.ui.checkbox.checked = true; n.attributes.checked = true; n.ui.checkbox.checked = true; } function getAllRoot(value){ var rootNode = value.getRootNode();//获取根节点 rootNode.attributes.checked = false; rootNode.ui.checkbox.checked = false; findchildnode(rootNode); //开始递归 //nodevalue= temp.join(","); //alert(nodevalue); //return nodevalue; } //var temp = []; //获取所有的子节点 function findchildnode(node){ var childnodes = node.childNodes; Ext.each(childnodes, function (){ //从节点中取出子节点依次遍历 var nd = this; nd.attributes.checked = false; nd.ui.checkbox.checked = false; //temp.push(nd.id); if(nd.hasChildNodes()){ //判断子节点下是否存在子节点 findchildnode(nd); //如果存在子节点 递归 } }); }
5.点击tree节点,连动选中子节点和父节点
listeners: { "checkchange": function(node, flag) { //获取所有子节点 node.cascade( function( node ){ node.attributes.checked = flag; node.ui.checkbox.checked = flag; return true; }); //获取所有父节点 var pNode = node.parentNode; for(; (pNode != null && pNode.id !="-1"); pNode = pNode.parentNode ){ if (flag || tree.getChecked(id, pNode ) == "") { pNode.ui.checkbox.checked = flag; pNode.attributes.checked = flag; } } }
6.保存时遍历左右打勾节点
var nodevalue; function getAllNode(tree){ var rootNode = tree.getRootNode();//获取根节点 findallchildnode(rootNode); //开始递归 nodevalue= temp.join(","); return nodevalue; } var temp = []; //获取所有的子节点 function findallchildnode(node){ var childnodes = node.childNodes; Ext.each(childnodes, function (){ //从节点中取出子节点依次遍历 var nd = this; if(nd.attributes.checked == true) { //temp.push('{'); temp.push(nd.id); temp.push(nd.parentNode.id); temp.push('}'); } if(nd.hasChildNodes()){ //判断子节点下是否存在子节点 findallchildnode(nd); //如果存在子节点 递归 } }); }
7.解决日历控件弹出宽度太小的问题
Ext.isIE8 = Ext.isIE && navigator.userAgent.indexOf('MSIE 8') != -1; Ext.override(Ext.menu.Menu, { autoWidth: function () { var el = this.el, ul = this.ul; if (!el) { return; } var w = this.width; if (w) { el.setWidth(w); } else if (Ext.isIE && !Ext.isIE8) { //Ext2.2 支持 Ext.isIE8 属性 el.setWidth(this.minWidth); var t = el.dom.offsetWidth; el.setWidth(ul.getWidth() + el.getFrameWidth("lr")); } } });
8.弹出加载数据的等待窗体
<body onload="showMsg();" id ="body" style=" width:100%;"> var myMask; function showMsg() { myMask = new Ext.LoadMask(Ext.getBody(), { msg: "正在加载数据...请稍候" }); myMask.show(); } myMask.hide();
9.new一个对象弹出window
function showChart() { var chart = new Ext.data.JsonStore({ fields: ['name', 'visits', 'views'], data: [ { name: 'Jul 07', visits: 245000, views: 300000 }, { name: 'Aug 07', visits: 240000, views: 350000 }, { name: 'Sep 07', visits: 355000, views: 400000 }, { name: 'Oct 07', visits: 375000, views: 420000 }, { name: 'Nov 07', visits: 490000, views: 450000 }, { name: 'Dec 07', visits: 495000, views: 580000 }, { name: 'Jan 08', visits: 520000, views: 600000 }, { name: 'Feb 08', visits: 620000, views: 750000 } ] }); var panel = new Ext.Panel({ title: '用电图表统计', width: 800, height: 500, items: { xtype: 'columnchart', url: '../../ext/resources/charts.swf', store: chart, xField: 'name', series:[ { type:'column', yField:'views', displayName:'views' }, { type:'column', yField:'visits', displayName:'visits' }] } }); var win = new Ext.Window({ renderTo: 'showWin', width: 800, height: document.documentElement.clientHeight-50, x:200, y:10, closable: false, buttonAlign:'center', items:[panel], buttons:[{text:'日'},{text:'周'},{text:'月'},{text:'年'},{ text:'关闭', handler:function(){ win.close(); } }] }); win.show(); }
10.ext form自动加载数据
var reader = new Ext.data.JsonReader({}, [ { name: 'roomid', type: 'string' }, { name: 'size', type: 'string' }, { name: 'a', type: 'string' }, { name: 'b', type: 'string' }, { name: 'c', type: 'string' }, { name: 'd', type: 'string' }, { name: 'e', type: 'string' }, { name: 'f', type: 'string' } ]); var panel = new Ext.form.FormPanel({ labelAlign: 'right', labelWidth: 130, reader: reader, items: [{ layout: 'column', items: [{ columnWidth: .50, layout: 'form', items: [{ xtype: 'textfield', fieldLabel: '房间号', width: 110, disabled: true, name: 'roomid' }, { xtype: 'textfield', fieldLabel: '面积', width: 110, disabled: true, name: 'size' }, { xtype: 'textfield', fieldLabel: '电表读数', width: 110, disabled: true, name: 'a' }, { xtype: 'textfield', fieldLabel: '当前用能',width: 110,disabled: true,name: 'b'}] }, { columnWidth: .50, layout: 'form', items: [{ xtype: 'textfield', fieldLabel: '日额定单位面积用能', name: 'c', width: 110, disabled: true }, { xtype: 'textfield', fieldLabel: '日单位面积用能', name: 'd', width: 110, disabled: true }, { xtype: 'textfield', fieldLabel: '用能状态', name: 'e', width: 110, disabled: true }, { xtype: 'textfield', fieldLabel: '系统', name: 'f', width: 110, disabled: true }] }] }], }); panel.getForm().load({ url: 'LightingGrid.aspx?num=1', method: 'POST', success: function (form, action) { panel.load(); (action.result.data) }, failure: function (form, action) { } }); 后台json数据: Response.Write("[{roomid:'237-241',size:'68.7',a:'125.0kwh',b:'0.5kwh',c:'0.34kwh',d:'3.4kwh',e:'正常',f:'稳定'}]"); Response.End();
11. extjs+funsioncharts结合显示图表
var panel = new Ext.form.FormPanel({ html: "<div id = \"showWin\"></div>" }); var win = new Ext.Window({ width: 410, height: document.documentElement.clientHeight - 120, x: 300, y: 10, closable: false, buttonAlign: 'center', items: [panel], buttons: [{ text: '关闭', handler: function () { win.close(); } }] }); win.show(); var chartXMLData = "<chart caption='照明情况' subCaption=''>"; chartXMLData += "<set label='1月' value='" + 5 + "' />"; chartXMLData += "<set label='2月' value='" + 6 + "' />"; chartXMLData += "<set label='3月' value='" + 7 + "' />"; chartXMLData += "<set label='4月' value='" + 8 + "' />"; chartXMLData += "<set label='5月' value='" + 9 + "' />"; chartXMLData += "<set label='6月' value='" + 9 + "' />"; chartXMLData += "<set label='7月' value='" + 9 + "' />"; chartXMLData += "<set label='8月' value='" + 9 + "' />"; chartXMLData += "<set label='9月' value='" + 9 + "' />"; chartXMLData += "<set label='10月' value='" + 9 + "' />"; chartXMLData += "<set label='11月' value='" + 9 + "' />"; chartXMLData += "<set label='12月' value='" + 9 + "' />"; chartXMLData += "</chart>"; var myChart = new FusionCharts("../../FusionCharts/Charts/Column3D.swf", "myChartId", "400", "300", "0", "1"); myChart.setXMLData(chartXMLData); myChart.render("showWin");
12. 子grid选中一行到父grid,grid删除一行
var rowIndex = gridBuild.store.indexOf(gridBuild.getSelectionModel().getSelected()); store1.add(storeBuild.getAt(rowIndex)); win.close(); var rowIndex = grid2.store.indexOf(grid2.getSelectionModel().getSelected()); store2.remove(store2.getAt(rowIndex));
13. editorgrid combobox 验证完成事件
if(gridBuild.activeEditor != null) { gridBuild.activeEditor.completeEdit(); } gridBuild为editorgrid
相关文章推荐
- 总结之前项目的技术要点
- 微软项目技术结构思路 ExtJs/JQuery + Asp.net MVC + Wcf service + Entity Framework
- 项目管理-技术论证会的组织实施注意要点
- 外包项目管理技术要点
- EAI概述,需求,功能,技术要点----4. EAI项目开发过程
- 最近项目的技术要点及浏览器内部工作原理
- Winform技术要点及案例项目开发小结
- PBOC/EMV 部分技术要点摘录
- spring mvc 项目中技术要点摘要
- 微软项目技术结构思路 ExtJs/JQuery + Asp.net MVC + Wcf service + Entity Framework
- 2015级WCF项目设计优秀技术要点总结
- 项目开发J2EE框架开发原型技术要点
- 项目技术要点
- 项目兼容ie8技术要点
- 浅谈vue项目重构技术要点和总结
- ERP项目实施技术要点分析
- HBase学习、项目模块技术要点总结
- 新锐房地产销售管理系统 (部分流程)技术解析(一)用三层架构搭建项目
- 地图集web项目_技术学习(一)_前后端数据传输(ajax)
- 软件项目中的技术预研