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

相关文章
相关标签/搜索