Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Extjs 当文本恢复为空白时,如何使渲染器显示提示横幅?_Extjs_Grid - Fatal编程技术网

Extjs 当文本恢复为空白时,如何使渲染器显示提示横幅?

Extjs 当文本恢复为空白时,如何使渲染器显示提示横幅?,extjs,grid,Extjs,Grid,我在Sencha Ext.JS 3.4 EditorGridPanel上设置了一个渲染器。我允许用户单击一个按钮,添加行并在这些行中填充各种单元格,并且我设置了一个提示横幅,以便在添加空行后立即显示一些有用的文本 我的提示横幅解决方案基于,该解决方案非常有效,除了一个小警告:当有人在其中一个单元格中键入文本,然后将该文本还原为空白时,,之前存在的内容将保留,而不是变为空白。您可以根据自己的内心内容进行编辑,但一旦尝试删除单元格中的所有文本,您所做的更改将被忽略 我查看了渲染器和onblur上的S

我在Sencha Ext.JS 3.4 EditorGridPanel上设置了一个渲染器。我允许用户单击一个按钮,添加行并在这些行中填充各种单元格,并且我设置了一个提示横幅,以便在添加空行后立即显示一些有用的文本

我的提示横幅解决方案基于,该解决方案非常有效,除了一个小警告:当有人在其中一个单元格中键入文本,然后将该文本还原为空白时,,之前存在的内容将保留,而不是变为空白。您可以根据自己的内心内容进行编辑,但一旦尝试删除单元格中的所有文本,您所做的更改将被忽略

我查看了渲染器和onblur上的Sencha文档,甚至还有监听器参数,我尝试捕获onblur事件,但似乎没有触发任何事件(使用Chrome开发者工具断点)。有没有一种方法可以让它工作起来,以便有人可以在键入文本后将文本还原为空白

一些相关代码: (根据评论请求)


该问题最有可能是由
allowBlank:false
与默认值的组合引起的

事实上,这种行为与预期的一样:您不允许字段保持为空,因此编辑器将恢复为最后一个有效的非空值


尝试添加
revertInvalid:false
或删除
allowBlank:false
(首选),它应该可以工作。

您可以发布相关代码吗?我添加了一些代码;请注意渲染器属性。另外,“监听器”是我尝试添加一个onblur监听器,我可以用它来修复这个不希望出现的行为;它不起作用,但我把它留在那里了。渲染器解决方案在没有它的情况下运行良好(除了我问题中的明显问题)。这正是我所需要的。你帮了大忙!
  function renderCueBanner( value, metaData, record, rowIndex, colIndex, store ) {
     if( !value && record.phantom )
        return 'Double-click, and type';
     else
        return value;
  }

  //other code

MyCompany.ui.grid.Macros = Ext.extend(Ext.grid.EditorGridPanel, {
  title: 'Macros',

  //other code

  var config = {
     stripeRows: true,
     viewConfig: { emptyText: 'No Macros to display' },
     loadMask: true,
     store: store,
     sm: sm,
     tbar: tbar,
     colModel: new Ext.grid.ColumnModel({
        defaults: {
           menuDisabled: true
        },
        columns: [sm, {
           header: 'Macro Category',
           dataIndex: 'group',
           sortable: true,
           editor: {
              fieldLabel: 'Macro Category',
              forceSelection: false,
              typeAhead: false,
              valueField: 'name',
              xtype     : 'MyCompany.ui.autocompleter.MacroGroup'
           },
           renderer  : renderCueBanner,
           width: 150
        }, {
           header: 'To',
           dataIndex: 'to',
           editor: {
              xtype: 'textfield',
              allowBlank: false
           },
           sortable: true,
           renderer  : renderCueBanner,
           width: 400
        }],
        listeners: {
           'onblur' : {
               fn: renderCueBanner,
               handler: renderCueBanner,
               delay: 100
           }
        },
        isCellEditable: function(col, row) {
           if (!Lynx.userCan('write')) {
              Ext.Msg.alert(
                 'Access Denied',
                    'You are a read only user'
              );
              return false;
           }
           return Ext.grid.ColumnModel.prototype.isCellEditable.call(this, col, row);
        }
     }),
     //...other code...
   };