uniDBGrid设置文字操作栏

为uniDBGrid设置文字操作栏,如下图的效果,用户点击审核,执行审核代码,点退回,执行退回代码:

对于Web应用界面,这是最常见的方式,那对于我等Delphi开发者来说,基于uniGUI该怎么实现呢?

首先,为uniDBGrid准备“操作”这一栏的显示内容,具体说,在数据集中准备好显示的数据。

我是为数据集加了一列,叫operation。

然后在operation的TField.OnGetText中返回显示的数据:

<a class="btnopbtn" style="color: #148a14" onclick="ajaxRequest(O430,'audit',['id=C42EBDFDDA9B4526B67EECE72FD7AF5F']);">审核</a>|<a class="btnopbtn" style="color: #f94936" onclick="ajaxRequest(O430,'unaudit',['id=C42EBDFDDA9B4526B67EECE72FD7AF5F']);">退回</a>

对应的Delphi代码:

procedure TCustomBillBrowserFrame.OperationFieldGetText(Sender: TField; var Text: string; DisplayText: Boolean); begin inherited; Text:= '<a class="btnopbtn" style="color: #148a14" onclick="ajaxRequest('+UniDBGrid1.JSName+',' + QuotedStr('audit')+',[''id='+Sender.DataSet.FieldByName('fid').AsString+''']);">'+'审核</a>|' + '<a class="btnopbtn" style="color: #f94936" onclick="ajaxRequest('+UniDBGrid1.JSName+',' + QuotedStr('unaudit')+',[''id='+Sender.DataSet.FieldByName('fid').AsString+''']);">'+'退回</a>'; end;

要说明的是:

1.ajaxRequest会触发对应控件的OnAjaxEvent事件

2.具体是哪一个控件呢,由ajaxRequest的第一个参数决定,那这里我们要写成UniDBGrid1.JSName

3.第二个audit:对应EventName,第三个参数对应Params,参考下面的代码:

procedure TCustomBillBrowserFrame.UniDBGrid1AjaxEvent(Sender: TComponent;
    EventName: string; Params: TUniStrings);
begin
  inherited;
//
end;

明白上面的原理,可以直接看下面的实际代码了:

procedure TAudit2YmJHSBFrame.UniDBGrid1AjaxEvent(Sender: TComponent; EventName: string; Params: TUniStrings);
var
  id: string;
begin
  inherited;
  // uniSession.Log('EventName='+EventName);
  if EventName = 'audit' then
  begin
    id := Params['id'].AsString;
    //执行审核操作的代码,这里省了...
  end;
  if EventName = 'unaudit' then
  begin
    id := Params['id'].AsString;
    //执行退回操作的代码,这里省了
  end;

end;

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==编辑

补充:

一定要重新定位对应的数据集,要清楚,你点击的单元格所在的行,与uniDBGrid对应数据集的当前记录不一定是对应的。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值