UniDBGrid控件的幾個功能優化


內容自動換行

默認UniDBGrid的cell內的內容如果超出表格列寬並不自動換行和調整行高,給客戶帶來極大的不方便,通過修改ServerModule的屬性CustomCSS可以實現。

<style type="text/css">

.x-grid-cell-inner {

  white-space: initial;

}</style>

鼠標停留顯示字段

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

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

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

function pagingBar.beforeInit(sender, config)

{

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM