UniDBGrid控件的幾個功能優化

內容自動換行

默認UniDBGrid的cell內的內容若是超出表格列寬並不自動換行和調整行高,給客戶帶來極大的不方便,經過修改ServerModule的屬性CustomCSS能夠實現。css

<style type="text/css">測試

.x-grid-cell-inner {spa

  white-space: initial;.net

}</style>blog

鼠標停留顯示字段

若是某個表格字段內容太長,你想實現當鼠標移動到字段上方時以提示窗口形式顯示字段內容,你能夠在查詢語句執行後設置表格對應字段的ShowToolTip屬性實現。事件

UniDBGrid1.Columns.Items[0].ShowToolTip:=true;ip

表格底部顯示當前記錄數和總記錄數
         在UniDBGrid的ClientEvents->UniEvents屬性中,選擇Ext.toolbar.Paging,添加pagingBar.beforeInit事件,再運行表格後你會發現表格底部右側將顯示「顯示1-10條,共120條」。get

function pagingBar.beforeInit(sender, config)it

{io

config.displayInfo = true;

}

自動設置列寬

打開UniDBGrid的ClientEvents->ExtEvents屬性,選擇Ext.data.Store頁,雙擊其store.load事件,添加以下代碼便可實現每一個列根據其最長字段的長度自動調整表格列寬:

function store.load(sender, records, successful, operation, eOpts)

{

  sender.grid.columnManager.columns.forEach(function(col){col.autoSize()})

}

鎖定某行某列        

若是UniDBGrid的ReadOnly屬性爲False,則容許雙擊一個CELL來編輯其內容,若是想要讓特定的行和列不容許被編輯,請打開UniDBGrid的ClientEvents->ExtEvents屬性,選擇Ext.grid.Panel頁,雙擊其beforeedit事件,添加以下代碼:

function beforeedit(editor, context, eOpts)

{

  var FixedRow, FixedCol;

  FixedRow = 3;

  FixedCol = 3;  

  if (editor.cmp.uniRow < FixedRow || editor.cmp.uniCol < FixedCol)

{

     return false;

       }

}

         以上代碼將實現鎖定前三行和前三列不能雙擊表格進入編輯狀態,其它區域不受影響。可是,測試發現,若是UniDBGrid的Options->dgRowSelect屬性爲true時,該方法將失效。

獲取點中字段的內容
打開UniDBGrid的ClientEvents->ExtEvents屬性,選擇Ext.grid.Panel頁,雙擊其celledit事件,添加以下代碼:

function cellclick(sender, td, cellIndex, record, tr, rowIndex, e, eOpts)

{

alert(sender.store.getAt(rowIndex).get(cellIndex));

}

         以上代碼可以實現顯示鼠標點擊的CELL。可是,測試發現,若是UniDBGrid設置了Options->dgRowSelect和dgRowNumbers等屬性,cellindex要相應的減去這些設置屬性致使新增的列數,好比表格設置了dgRowSelect屬性,則表格的第一列是勾選框,佔用了一列,alert(sender.store.getAt(rowIndex).get(cellIndex));

應該寫爲

alert(sender.store.getAt(rowIndex).get(cellIndex-1));

設置隔行變色和特徵行變色

有時須要讓表格的奇數行和偶數行分別顯示不一樣的背景顏色,有時又須要根據某個字段的特徵值設定其記錄背景色,雙擊UniDBGrid的OnDrawColumnCell添加事件:

procedure TUniFrame1.UniDBGrid1DrawColumnCell(Sender: TObject; ACol,

  ARow: Integer; Column: TUniDBGridColumn; Attribs: TUniCellAttribs);

begin

if Column.Field.DataSet.RecNo mod 2=0 then

  begin

    Attribs.Color:=clBlue;

  end

else

  begin

    Attribs.Color:=clRed;

  end;

if Column.Field.DataSet.FieldByName('護照編號').AsString='HZ002' then

  begin

    Attribs.Color:=clYellow;

  end;

end;————————————————版權聲明:本文爲CSDN博主「【路在腳下】」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連接及本聲明。原文連接:https://blog.csdn.net/dlboy2018/article/details/103544149

相關文章
相關標籤/搜索