隨筆-9  評(píng)論-168  文章-266  trackbacks-0

          //功能:根據(jù)輸入的編碼傳給后臺(tái)分析,回傳所需的數(shù)據(jù)及數(shù)據(jù)自定義的列格式,列名,查詢分頁(yè)等

          var columns = new Array(); // 創(chuàng)建一個(gè)數(shù)組對(duì)象.

          // ............查詢控件...................
          // ------面板1...列表選擇查詢控件1--------
          var queryselect = new Ext.form.ComboBox({
           fieldLabel : '查詢選擇', // UI標(biāo)簽名稱
           name : 'queryselect', // 作為form提交時(shí)傳送的參數(shù)
           //allowBlank : false, // 是否允許為空
           readOnly : true, // 是否只讀
           mode : 'local', // 數(shù)據(jù)模式,local為本地模式
           triggerAction : 'all', // 顯示所有下列數(shù).必須指定為'all'
           anchor : '90%',
           // typeAhead : true,
           emptyText : "請(qǐng)選擇查詢模式...",// queryselect.getSize(),
           listWidth : 150, // 下拉列表寬,一般不需設(shè)置即等同COMBOBOX寬度,這里有未知問(wèn)題,必須設(shè)置.
           valueField : 'value', // 傳送的值
           displayField : 'text',// 列表選擇控件里的UI列表顯示的文本
           store : new Ext.data.SimpleStore({ // 填充的數(shù)據(jù)
            fields : ['value', 'text'],
            data : [['mxbbh', '明細(xì)表編號(hào)'], ['ljmch', '零件名稱']]
           })
          });

          // ------面板1...查詢控件2--------
          var querytext = new Ext.form.TextField({
           name : 'queryvalue',
           //allowBlank : false,
           emptyText : '輸入查詢內(nèi)容',
           fieldLabel : '查詢',
           anchor : '100%'
          });

          // ------查詢...面板1--------
          var queryform = new Ext.FormPanel({
           // width : 300,

           // url : './querybean/query.jsp',
           labelAlign : 'top', // 與控件一起定義的文本相對(duì)于控件的位置.
           collapsible : true,
           title : '查詢',
           frame : true,
           autoHeight : true,
           layout : 'form', // form定義在column里,不然與控件一起定義的文本顯示不出來(lái).
           items : [queryselect, querytext],
           buttons : [{
            text : '提交',
            handler : function() {
             if (queryform.getForm().isValid())
              queryform.getForm().submit
                // Ext.Ajax.request
                ({
                 url : './querybean/query.jsp',
                 params : {
                  command : 'query',
                  start : 0,
                  limit : 10
                 },
                 watiMsg : '查詢中...請(qǐng)等待',
                 success : function(res, v) {
                  var json = Ext.util.JSON
                    .decode(v.response.responseText);

                  // var a1 = [{
                  // name : 'ljh',
                  // type : 'string'
                  // }, {
                  // name : 'ljmch',
                  // type : 'string'
                  // }];
                  // var storetem = new Ext.data.JsonStore({
                  // url : './querybean/query.jsp',
                  // totalProperty : 'total',
                  // root : 'root',
                  // fields : a1,
                  // baseParams : {
                  // queryselectvalue : queryselect
                  // .getValue(),
                  // queryvalue : querytext.getValue()
                  // }
                  // // pruneModifiedRecords : true
                  // });

                  // querygrid.
                  // store = storetem;
                  // a = a1;
                  // var root=new Array();
                  // Ext.apply(a, a1);
                  // Ext.apply(store, storetem);
                  // querygrid.store.commitChanges();

                  // querygridtoolpage.bind(querygrid.store);
                  // store = querygrid.store;

                  // store.loadData(json);

                  Ext.apply(columns, json.columns);// 將第二個(gè)對(duì)象中的所有屬性復(fù)制到第一個(gè)對(duì)象中,第三個(gè)參數(shù)對(duì)象為設(shè)置默認(rèn)值.
                  columns[0] = eval(columns[0]);
                  for (var i = 1; i < columns.length; i++)
                   // 執(zhí)行string中的new表達(dá)式轉(zhuǎn)換為對(duì)象
                   columns[i].editor = eval(columns[i].editor);
                  cm.setConfig(columns);
                  store.loadData(json);

                  // queryform.getForm().reset();
                  // store.reload();

                  // querytext.getValue().toString();

                  // store.load(
                  // { // 加載查詢面板數(shù)據(jù)
                  // //由于是表單提交,所以字段值自動(dòng)提交,且不執(zhí)行STORE的beforeload事件
                  // params : {
                  // command:'query',
                  // queryvalue : querytext.getValue(),
                  // start : 0,
                  // limit : 10
                  // }
                  // }
                  // ); // 加載數(shù)據(jù)源
                 }
                })
            }
           }, {
            text : '重置',
            handler : function() {
             queryform.getForm().reset();
            }
           }]
          });

          // ..............查詢表格.....................
          // 限制GRID表格最多只能顯示10列
          var a = [{
             name : '0',
             type : 'string'
            }, {
             name : '1',
             type : 'string'
            }, {
             name : '2',
             type : 'string'
            }, {
             name : '3',
             type : 'string'
            }, {
             name : '4',
             type : 'string'
            }, {
             name : '5',
             type : 'string'
            }, {
             name : '6',
             type : 'string'
            }, {
             name : '7',
             type : 'string'
            }, {
             name : '8',
             type : 'string'
            }, {
             name : '9',
             type : 'string'
            }, {
             name : '10',
             type : 'string'
            }];
          // ------------------------------------------------調(diào)試

          // ---------中間右邊查詢面板的表格內(nèi)容------------
          var sm = new Ext.grid.CheckboxSelectionModel({
           handleMouseDown : Ext.emptyFn
          });

          var cm = new Ext.grid.ColumnModel([
          // sm, {
          // header : '零件號(hào)',
          // dataIndex : 'ljh',
          // editor : new Ext.form.TextField()
          // }, {
          // header : '零件名稱',
          // dataIndex : 'ljmch',
          // editor : new Ext.form.TextField()
          // }, {
          // header : '零件種類',
          // dataIndex : 'ljzhl',
          // editor : new Ext.form.TextField()
          // }
          // ,{header:'明細(xì)表編號(hào)',dataIndex:'mxph'},{header:'明細(xì)表名稱',dataIndex:'mxmch'},
          // {header:'版本號(hào)',dataIndex:'bbh'},{header:'現(xiàn)行通知書(shū)號(hào)',dataIndex:'tzh'},
          // {header:'頁(yè)數(shù)',dataIndex:'ysh'},{header:'備注',dataIndex:'bzh'}
          ]);

          // ------------------------------------------------調(diào)試
          var store = new Ext.data.JsonStore({
           url : './querybean/query.jsp',
           totalProperty : 'total',
           root : 'root',
           fields : a,
           pruneModifiedRecords : true
          });

          store.on('metachange', function(S, meta) {
             Ext.Msg.alert('store.metachange', '');
            });

          // -----------查詢面板數(shù)據(jù)讀入事件------------------
          store.on('beforeload', function(s, o) {// 在請(qǐng)求一個(gè)數(shù)據(jù)對(duì)象之前事件(數(shù)據(jù)未讀入).Ext.data.JsonStore讀入數(shù)據(jù)之前的事件.
             var ststore = store;
             store.baseParams = {
              command : 'query', // 返回JSP處理的查詢選擇
              queryselectvalue : queryselect.getValue(),
              queryvalue : querytext.getValue()
             };
            });
          store.on('load', function(storetem, records, options) {
           var s, r, o, d1;
            // Ext.Msg.alert('store.load', '');
           });

          // 當(dāng)數(shù)據(jù)緩存改變和數(shù)據(jù)緩存刷新的時(shí)候,調(diào)用的事件.即:請(qǐng)求到數(shù)據(jù)但未讀入GRID中時(shí)的事件,函數(shù)參數(shù)為(STORE this)
          store.on('datachanged', function(s) {
            });

          var querygridtoolpage = new Ext.PagingToolbar({
           store : store,
           pageSize : 10,
           displayInfo : true,
           displayMsg : 'Displaying topics {0} - {1} of {2}',
           emptyMsg : "No topics to display"
          });
          var querygrid = new Ext.grid.EditorGridPanel({
           width : 640,
           height : 480,
           clicksToEdit : 1, // (3)單擊次數(shù)如1,開(kāi)始編輯
           cm : cm,
           sm : sm,
           store : store,
           frame : true,
           loadMask: {msg: '正在加載數(shù)據(jù),請(qǐng)等待...'},
           tbar : [{
              text : '添加',
              handler : function() {
               var f = Ext.data.Record.create(a);
               var d = new f({
               // ljh : 'ljh',
               // ljmch : 'ljmch'
               });
               for (var i = 1; i < columns.length - 1; i++)
                // columns.length-1 : JSP傳來(lái)的columns里包含了一個(gè)sm.
                d.set(a[i].name, '未定義'); // 初始化record值
               var d1 = new Array();
               querygrid.stopEditing();
               store.insert(0, d); // 增加一空白記錄
               querygrid.startEditing(0, 1);
               store.getAt(0).dirty = true
              }
             }, '-', {
              text : '保存',
              handler : function() {
               var json = []; // 定義增加記錄的數(shù)組
               var alter = [];
               for (var i = 0, c = store.getCount(); i < c; i += 1) {
                if (store.getAt(i).dirty) {
                 var e = 0;
                 for (var j = 0; j < columns.length - 1; j++) { // 循環(huán)判斷記錄是添加還是修改
                  if (store.getAt(i).isModified(j.toString()))
                   e++;
                 }
                 if (e == columns.length - 2)
                  json.push(store.getAt(i).data);
                 else {
                  alter.push(store.getAt(i).data);
                  var t = store;
                 }// var record=store;
                 // var s=store.getAt(i).getChanges()
                 // if(store.getAt(i).isModified('1'))
                 // Ext.Msg.alert('isModified',store.getAt(i).getChanges());
                }
               };
               if (json[0] == null) {
                Ext.Msg.alert('information', 'not data modify!');
                return;
               };
               var c = new Array(); // 定義數(shù)組
               for (var i = 0; i < columns.length - 1; i++) {
                c[i] = a[i]
               };
               Ext.Ajax.request({
                method : 'POST',
                url : './querybean/query.jsp',
                params : { // POST傳遞參數(shù)出去,每個(gè)參數(shù)以逗號(hào)隔開(kāi).如:command和data兩參數(shù)
                 kind : queryselect.getValue(),
                 columns : Ext.encode(c), // 數(shù)組必須以編碼的方式發(fā)送
                 command : "save",
                 record : Ext.encode(json),
                 alter : Ext.encode(alter)
                },
                success : function() {
                 Ext.Msg.alert('information', 'data load success!');
                 store.reload();
                },
                failure : function() {
                 Ext.Msg.alert('information', 'data load failure!');
                }
               })
              }
             }, '-', {
              text : '刪除',
              handler : function() {
               var sm = querygrid.getSelectionModel(); // Returns the
               // grid's SelectionModel.
               var selected = sm.getSelections();
               // Returns the selected records.(getSelections() : Array)
               var ids = [];
               for (var i = 0; i < selected.length; i += 1) {
                var member = selected[i].data; // selected是Ext.data.Record類型數(shù)組.
                if (member[0]) { // Record類型的ID屬性標(biāo)識(shí)唯一性.
                 ids.push(member[0]); // 如果有ID屬性,則表示該行數(shù)據(jù)是被修改過(guò)的,所以需要訪問(wèn)數(shù)據(jù)庫(kù)進(jìn)行刪除
                } else {
                 // 如果沒(méi)有ID屬性,則表示該行數(shù)據(jù)是新添加的未保存的數(shù)據(jù),所以不需要訪問(wèn)數(shù)據(jù)庫(kù)進(jìn)行刪除該行
                 store.remove(store.getAt(i));
                }
               };
               if (ids.join('') == '')
                return;

               Ext.Msg.confirm('信息', '確定要?jiǎng)h除所選項(xiàng)嗎?', function(btn) {
                  if (btn == 'yes') {
                   // 發(fā)送刪除請(qǐng)求
                   Ext.Ajax.request({
                    method : 'POST',
             %3

          posted on 2008-09-22 13:24 紫蝶∏飛揚(yáng)↗ 閱讀(1253) 評(píng)論(3)  編輯  收藏 所屬分類: EXTJS

          評(píng)論:
          # re: 今天公布其近期才完成的某一項(xiàng)目某一階段的部分手稿,能看懂就看吧. 2009-03-17 12:26 | gzc
          能不能給這個(gè)完整的代碼給你參考,謝謝,最近也在用ext js  回復(fù)  更多評(píng)論
            
          # re: 今天公布其近期才完成的某一項(xiàng)目某一階段的部分手稿,能看懂就看吧. 2009-03-17 12:48 | gzc
          能不能給這個(gè)完整的代碼給 參考,謝謝,最近也在用ext js   回復(fù)  更多評(píng)論
            
          # re: 今天公布其近期才完成的某一項(xiàng)目某一階段的部分手稿,能看懂就看吧. 2009-03-20 11:31 | 紫蝶∏飛揚(yáng)↗
          @gzc
          這寫(xiě)代碼都只是手稿,看看就行了.其實(shí)這里也有蠻多錯(cuò)誤的,帖出來(lái)只是告訴大家使用方法和其思想而已.  回復(fù)  更多評(píng)論
            
          主站蜘蛛池模板: 繁昌县| 双柏县| 右玉县| 天祝| 楚雄市| 丹棱县| 土默特左旗| 光泽县| 延川县| 子长县| 乳源| 沙雅县| 关岭| 马龙县| 麻栗坡县| 葵青区| 浦县| 兖州市| 枣庄市| 望江县| 忻州市| 洱源县| 卢湾区| 通河县| 田林县| 抚顺市| 湖南省| 鲁山县| 葵青区| 长泰县| 峨眉山市| 麦盖提县| 贵港市| 申扎县| 察哈| 屏东市| 阜康市| 新源县| 房产| 女性| 饶阳县|