读书人

关于cxGrid的有关问题

发布时间: 2012-03-28 15:40:03 作者: rapoo

关于cxGrid的问题
如下面的图所示,新建单据的时候,cxGrid显示多个空白行,然后由用户编辑cxGrid的空白行,

编辑完毕后,点击“保存”按钮存盘,存盘时通过程序过滤掉空行。(第一行、第四行为空行,保存时过滤掉)




保存数据时,空行被过滤掉,写入数据库,然后重新加载单据,如下图所示




问题一、如何在打开界面时,使得cxgrid默认显示多个空白行(50行)。

问题二、如何在保存时,过滤掉空白行。



[解决办法]
1.cxgrid的显示是绑定数据集的,你需要在数据集中构造空行。
比如:

Delphi(Pascal) code
with CDSHis do  //CDSHis就是数据集,构造数据集可以用ClientDataSet  begin    Open;    for I := 1 to Num do  //Num代表行数    begin      Insert;      Edit;            FieldByName('卡号').AsString := '';      FieldByName('交易时间').AsString := '';      FieldByName('参考号').AsString :=  '';      FieldByName('金额').AsString := '';      FieldByName('记录').AsString := '';      Post;    end;    First;  //构造完毕后指向到第一行  end;
[解决办法]
Delphi(Pascal) code
ADOQuery的locktype设置成ltBatchOptimistic后成批提交然后with ADOQuery do    begin    for I := 1 to 50 do  //Num代表行数    begin     append;     FieldByName('条码').AsString := ' ';    end;
[解决办法]
end;前掉了个post;
[解决办法]
Delphi(Pascal) code
ADOQuery的locktype设置成ltBatchOptimistic后成批提交然后with ADOQuery do    begin    for I := 1 to 50 do  //Num代表行数    begin     append;     FieldByName('条码').AsString := ' ';     Post;    end;
[解决办法]
保存后删除掉主键为空的记录可行吗
[解决办法]
探讨
引用:
保存后删除掉主键为空的记录可行吗


主键为空的话,怎么能保存呢?如果不能保存的话,也就谈不上保存后了!

[解决办法]
判断一个你的关键字是否有值就可以了啊, 没有值的都删除掉,然后在保存啊
[解决办法]
其实这种情况问题还是比较多的,如在批量提交时出现异常,等等情况,ADOQuery.Last,然后从下往上查,用FOR来指定向上次数,找到所有记录为空的都删除

因为今天比较忙,暂时没时间写个代码测试下,只说个大致逻辑
[解决办法]
建议不要直到qry1.Bof才结束,应该用FOR来指定次数或WHILE找到上面有数据的记录就停止,或者连续多条有记录时停止,再或者qry1.oPEN时先记录总共行数,然后根据最初行数和初始空行数进行判断
因为比如你有一千条记录,用BOF的话用得判断一千次,
[解决办法]
探讨
回复 case5166

从下往上的方法,不太好控制记录集的游标。
我现在用的方法改成从上往下了,如下


Delphi(Pascal) code

qry1.First; //游标置顶
while not qry1.Eof do //直到游标到达最底部
begin
if qry1.FieldByName('materialname').IsNull=……

读书人网 >.NET

热点推荐