【问题标题】:Get Element value in EXTjs GRID获取 EXTjs GRID 中的元素值
【发布时间】:2013-06-19 18:10:44
【问题描述】:

如何在 GRID 面板中获取记录字段的值?我有下一个代码:

   var gridTablaConsulta = Ext.create('Ext.grid.GridPanel', {
    title:'Consulta Tabla lotes',
    store: storeTabla,
    columns: [
        Ext.create('Ext.grid.RowNumberer'),
        {text: "NRBE", width: 60, sortable: true, dataIndex: 'NRBE'},
        {text: "APLIC", width: 60, sortable: true, dataIndex: 'APLIC'},
        {text: "FORM", width: 60, sortable: true, dataIndex: 'FORM'},
        {text: "VERFOR", width: 60, sortable: true, dataIndex: 'VERFOR'},
        {text: "FECLOT", width: 60, sortable: true, dataIndex: 'FECLOT'},
        {text: "HORLOT", width: 60, sortable: true, dataIndex: 'HORLOT'},
        {text: "TIPPAPLO", width: 60, sortable: true, dataIndex: 'TIPPAPLO'},
        {text: "TAMPAP", width: 60, sortable: true, dataIndex: 'TAMPAP'},
        {text: "FECINIIM", width: 60, sortable: true, dataIndex: 'FECINIIM'},
        {text: "FECINIOB", width: 60, sortable: true, dataIndex: 'FECINIOB',editor:{xtype:'textfield', allowBlank:true}},
        {text: "ESTLOT", width: 60, sortable: true, dataIndex:'ESTLOT',editor:{xtype:'textfield', allowBlank:true}},
        {text: "TOTPAGGE", width: 60, sortable: true, dataIndex: 'TOTPAGGE'},
        {text: "TOTPAGIM", width: 60, sortable: true, dataIndex: 'TOTPAGIM'},
        {text: "DESLOT", width: 60, sortable: true, dataIndex: 'DESLOT'},
        {text: "TIPDIF", width: 60, sortable: true, dataIndex: 'TIPDIF'},
        {text: "DIADIF", width: 60, sortable: true, dataIndex: 'DIADIF'},
        {text: "FECALT", width: 60, sortable: true, dataIndex: 'FECALT'},
        {text: "FECMOD", width: 60, sortable: true, dataIndex: 'FECMOD'},
        {text: "TERMOD", width: 60, sortable: true, dataIndex: 'TERMOD'},
        {text: "HORMOD", width: 60, sortable: true, dataIndex: 'HORMOD'}
    ],
    selType: 'rowmodel',
    plugins: [
        Ext.create('Ext.grid.plugin.RowEditing', {
            clicksToEdit: 2
        })
    ],

    listeners: {

         beforeedit: {
             scope: this,
             fn: function(e, context2){
                 var record2= context2.record;
                 var recordData2=record2.getData();
                 alert(JSON.stringify(recordData2));

             }
         },

         edit: function(e, context){
             var record = context.record;
             var recordData = record.getData();
             recordData.Funcionalidad = 'Modificar';
             alert(JSON.stringify(recordData));
             Ext.Ajax.request({
                 url: 'http://localhost:8080/MyMaver/ServletTablaLotes',
                 method: 'POST',

                 // merge row data with other params
                 params: recordData
             });
         }
        }
});

我希望当我显示网格并在寄存器中脉冲时,我可以评估字段“ESTLOT”的值,然后我将根据之前的值更改该值。

我的问题是我只知道谁来获取作为该寄存器一部分的所有字段,但我只想要 ESTLOT 值,将此值传递给我将评估该值的编辑函数。

谢谢大家,我需要很多帮助。

EDIT2:

 listeners: {

        beforeedit: function(editor, e, eOpts) {
            var grid = Ext.getCmp('gridTabla'); // or e.grid
            var hoy = new Date();

            dia = hoy.getDate(); 

            if(dia<10)
                {
                    dia=String("0"+dia);

                }

            mes = hoy.getMonth();

            if(mes<10)
            {
                    mes=String("0"+mes);

            }
            anio= hoy.getFullYear();
            fecha_actual = String(anio+""+mes+""+dia);
            //alert(fecha_actual);

            var mola = e.record.data.ESTLOT;
            alert(mola);

            if (e.record.data.ESTLOT === '02') {
                if (e.record.data.FECMOD === fecha_actual)
                 {
                e.cancel = false; //permite
                 }
                else{
                    e.cancel = true;
                }

            }  else
            {
                e.cancel = false; //permite
            }

        },

         edit: function(e, context){
             var record = context.record;
             var recordData = record.getData();

             recordData.Funcionalidad = 'Modificar';
             alert(JSON.stringify(recordData));


             Ext.Ajax.request({
                 url: 'http://localhost:8080/MyMaver/ServletTablaLotes',
                 method: 'POST',

                 // merge row data with other params
                 params: recordData
             });
         }
        }
    });

现在我想将 beforeedit 中包含的 var = "mola" 传递给编辑以进行最后的验证

EDIT 3 新代码和失败

      listeners: {

        beforeedit: 

            function preditar(editor, e, eOpts, mola) {
            var grid = Ext.getCmp('gridTabla'); // or e.grid
            var hoy = new Date();

            dia = hoy.getDate(); 

            if(dia<10)
                {
                    dia=String("0"+dia);

                }

            mes = hoy.getMonth();

            if(mes<10)
            {
                    mes=String("0"+mes);

            }
            anio= hoy.getFullYear();
            fecha_actual = String(anio+""+mes+""+dia);
            //alert(fecha_actual);

            var mola = e.record.data.ESTLOT;
            //alert(mola);
            editar(mola);

            if (e.record.data.ESTLOT === '02') {
                if (e.record.data.FECMOD === fecha_actual)
                 {
                e.cancel = false; //permite
                 }
                else{
                    e.cancel = true; //mo permite
                }

            }  else
            {
                e.cancel = false; //permite
            }

        },

         edit:

             function editar(e, context, mola){

             var record = context.record;
             var recordData = record.getData();
             var mola2= mola;
             alert(mola2);
             recordData.Funcionalidad = 'Modificar';
             //alert(JSON.stringify(recordData));

             Ext.Ajax.request({
                 url: 'http://localhost:8080/MyMaver/ServletTablaLotes',
                 method: 'POST',

                 // merge row data with other params
                 params: recordData
             });
         }
        }
});

它告诉我“记录是空的,它不是一个对象”并在这里出现:var record = context.record;

再次感谢。

【问题讨论】:

    标签: extjs


    【解决方案1】:

    煎茶:beforeEdit

    e : 对象 具有以下属性的编辑事件:

    value - 正在编辑的字段的值。

    listeners: {
         beforeedit: {
             scope: this,
             fn: function(e, context2){ 
                if(e.value=="ESTLOT"){
                  alert("value: " + e.value);
                }
             }
         },
    ...
    }
    

    编辑:

    我不太了解您想在哪里获取值,但在控制器上是另一种情况:

    捕捉事件:

    'gridView column[action=columnActionName]' : {
        click : me.funcitonInspect
    },
    

    功能:

    funcitonInspect : function(grid,el,rowIndex){
        var grid = Ext.ComponentQuery.query('grid')[0];
        var selection = grid.getSelectionModel();
        if(selection.hasSelection()){
            var modeloSelected = selection.getLastSelected();
            if(modeloSelected.data.NameField=="ESTLOT"){
                   ...
                }
        }
    },
    

    EDIT2:使用 FireEvent

    也许你可以在 beforeEdit 上做一个“fireevent”:

    this.fireEvent('edit', e, context); 
    

    One example:

    编辑 3:

    尝试通过以下方式获取值: var record = e.record;第二个参数是 eOpts(选项对象) - 请参阅下一个解释:sencha doc

    示例:

    edit:
    
        function editar(e, context, mola){
            var record = e.record;
            ...
        }
    },
    

    【讨论】:

    • 我想在编辑该值之前捕获该值,因为如果该值例如 02 则无法更改,如果该值为 03 则只能更改为 04。
    • 我想在 beforEdit 中捕获值以将该值传递给 edit:function
    • 也许你可以在 beforeEdit 上做一个“fireevent”:this.fireEvent('edit', e, context); 一个例子:stackoverflow.com/questions/6857242/…
    • 如何使用firevent?你能过去谁将是完整的代码吗?谢谢大家
    • 你能粘贴完整的代码吗,现在我有点迷路了......谢谢大家
    【解决方案2】:

    这是完整的解决方案。谢谢大家。

        listeners: {
    
            beforeedit: 
    
                function preditar(editor, e, eOpts) {
                var grid = Ext.getCmp('gridTabla'); // or e.grid
                var hoy = new Date();
                dia = hoy.getDate();  
                if(dia<10)
                    {
                        dia=String("0"+dia);
    
                    }
                mes = hoy.getMonth();
                if(mes<10)
                {
                        mes=String("0"+mes);
                }
                anio= hoy.getFullYear();
                fecha_actual = String(anio+""+mes+""+dia);
                e.record.beforeEditESTLOT = e.record.data.ESTLOT;
                if (e.record.data.ESTLOT === '02') {
                    if (e.record.data.FECMOD === fecha_actual)
                     {
    
                        e.cancel = false; //permite probar mañana con cambio fecha
                     }
                    else{
                        alert("Solo puedes modificar este estado en lotes modificados en el día actual");
                        e.cancel = true; //no permite
                    }
    
                }  else
                {
                    e.cancel = false; //permite
                }
    
            },
    
             edit:
                 function editar(e, context){
                 var record = context.record;
                 var recordData = record.getData();
                 recordData.Funcionalidad = 'Modificar';
                 var modificado = record.modified.ESTLOT; //valores anteriores
                 //alert(modificado);
                 //var nuevo = recordData.ESTLOT;
                 //var cadena = JSON.stringify(recordData);
                 //alert(cadena);
                 var prueba = context.record.data.ESTLOT;//valores nuevos
                 //alert(prueba);
                 if ((modificado==='06')||(modificado==='03'))
                 {
    
                     if ((prueba==='01')||(prueba==='02')||(prueba==='03')||(prueba==='06'))
                         {
                         Ext.Ajax.request({
                             //url: 'http://localhost:8080/MyMaver/ServletTablaLotes',
                             url: 'http://lnxntf05:8080/MyMaver/ServletTablaLotes',
                             method: 'POST',
                             // merge row data with other params
                             params: recordData
                         });
                         alert("Modificacion realizada correctamente");
                         }
                     else
                         {
    
                            alert("Si el valor anterior de estado de lote es 06 o 03 no puede pasar a valer 04 o 05");
    
                         }   
                 }
                 if ((modificado==='04')||(modificado==='05'))
                 {
    
                     if ((prueba==='02')||(prueba==='04')||(prueba==='05')||(prueba==='06'))
                         {
                         Ext.Ajax.request({
                             //url: 'http://localhost:8080/MyMaver/ServletTablaLotes',
                             url: 'http://lnxntf05:8080/MyMaver/ServletTablaLotes',
                             method: 'POST',
                             // merge row data with other params
                             params: recordData
                         });
                         alert("Modificacion realizada correctamente");
                         }
                     else
                         {
    
                            alert("Si el valor anterior de estado de lote es 04 o 05 no puede pasar a valer 01 o 03 o en blanco");
    
                         }   
                 }
    
                 if(modificado==='01')
                     {
                     if ((prueba==='02')||(prueba==='03')||(prueba==='04')||(prueba==='05')||(prueba==='06'))
                     {
                         Ext.Ajax.request({
                         //url: 'http://localhost:8080/MyMaver/ServletTablaLotes',
                         url: 'http://lnxntf05:8080/MyMaver/ServletTablaLotes',
                         method: 'POST',
                         // merge row data with other params
                         params: recordData
                     });
                         alert("Modificacion realizada correctamente");
                     }
    
                     else
                         {
                         alert("Insertad un valor valido");
    
                         }
    
                     }
                 if(modificado==='  ')
                     {
                     if ((prueba==='02')||(prueba==='01')||(prueba==='03')||(prueba==='04')||(prueba==='05')||(prueba==='06'))
                     {
                         Ext.Ajax.request({
                         //url: 'http://localhost:8080/MyMaver/ServletTablaLotes',
                         url: 'http://lnxntf05:8080/MyMaver/ServletTablaLotes',
                         method: 'POST',
                         // merge row data with other params
                         params: recordData
                     });
                         alert("Modificacion realizada correctamente");
                     }
                     else
                         {
                         alert("Insertad un valor valido");
    
                         }
    
                     }
    
             }
            }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-21
      • 2014-03-02
      • 2012-11-02
      • 1970-01-01
      • 2019-09-11
      • 2016-06-05
      • 1970-01-01
      • 2021-10-27
      相关资源
      最近更新 更多