2009-06-15 31 views
3

出現一個有趣的問題。在ExtJs網格中無法選擇文本字段

輸出具有自定義渲染的GridPanel。渲染器在運行時輸出基本的html輸入字段,但是我無法在輸入中選擇文本。我可以編輯它,但如果我不得不在輸入框中單擊並拖動,我將無法選擇文本。

這裏是一個exerpt:

tsGrid = new Ext.grid.GridPanel({ 
     id   : 'gridTimes', 
     store  : gridStore, 
     border  : false, 
     deletedLineIDs : [], 
     viewConfig : { 
      forceFit : true 
     }, 
     plugins  : [ 
      actionColumn 
     ], 
     cm   : new Ext.grid.ColumnModel([ 
      {id:'client',header: "client", width: 40, sortable: true, dataIndex: 'client'}, 
      {header: "product", width: 20, sortable: true, dataIndex: 'product'}, 
      {header: "job", width: 20, sortable: true, dataIndex: 'job'}, 
      {header: "task", width: 20, sortable: true, dataIndex: 'task'}, 
      {header: "notes", width: 20, sortable: true, dataIndex: 'notes'}, 
      {header: "cancomplete", width: 20, sortable: true, dataIndex: 'cancomplete'}, 
      {header: "Monday", width: 20, sortable: true, dataIndex: '0', cls : 'suppresspadding mon',renderer : function(v, p, record){return '<input tsid="' + record.id + '" class="x-form-field x-form-text" unselectable="off" onFocus="this.select()" value="' + v + '">';}}, 
      {header: "Tuesday", width: 20, sortable: true, dataIndex: '1', cls : 'suppresspadding tue',renderer : function(v, p, record){return '<input tsid="' + record.id + '" class="x-form-field x-form-text" onFocus="this.select()" value="' + v + '">';}}, 
      {header: "Wednesday", width: 20, sortable: true, dataIndex: '2', cls : 'suppresspadding wed',renderer : function(v, p, record){return '<input tsid="' + record.id + '" class="x-form-field x-form-text" onFocus="this.select()" value="' + v + '">';}}, 
     ]) 
    }) 

什麼想法?

回答

3

雖然選擇了「」文本行爲,但下面的CSS會阻止視覺選擇。

.X-GRID3排TD,.X-GRID3-摘要列 TD {線高度:13像素;垂直對齊:頂部;填充左:1px的;填充右:1px的; -moz-user-select:none;}

REMOVE「-moz-user-select:none;」顯示文本被選中。

0

ExtJS內置瞭解決此問題的解決方案Editable Grid。它充當一個常規的網格,但是可以讓您選擇某些列進行編輯。如果您重寫渲染器,則甚至可以僅使列中的特定行可編輯。

+0

是的我已經使用了可編輯網格,但一次只能編輯一個字段。我們需要一次打開整個網格,以便人們可以保持低調,在捕獲信息時查看信息。雖然 – StevenMcD 2009-06-18 05:02:53

+1

感謝您可以使用可編輯的網格。你可以設置觸發「編輯」的事件,當它被選中時開始激活,因此用戶可以只輸入,選項卡,類型,標籤等。 – 2009-06-18 05:50:40

+0

聽起來像一個計劃,讓我看看,謝謝! – StevenMcD 2009-06-19 13:18:36

0

嘗試設置:

tsGrid.getView().dragZone = null; (or empty object) 

Ext.grid.GridDragZone,詳細瞭解在建網拖歐米茄下降的特點。我懷疑這會阻止你選擇輸入中的文本。

0

僅供參考:在不同的方向上做,即。使元素非文本可選,使用應該在所有瀏覽器中工作的Ext.Element unselectable() function

例如,在一個小部件中,您可以撥打this.el.unselectable()