Procedure TFrmBaseChild.DBGridOrderby(aDBGrid:TDBGrid;Column: TColumn); //排序
Var
Indexname:String;
begin
inherited;
IF aDBGrid.DataSource.DataSet.IsEmpty Then
Exit;
IndexName:=aDBGrid.Columns[0].FieldName;
aDBGrid.DataSource.DataSet.DisableControls ;
IF OrderBy=0 Then //按升序排列
Begin
OrderBy:=1;
IF TClientDataSet(aDBGrid.DataSource.DataSet).IndexName =IndexName Then
TClientDataSet(aDBGrid.DataSource.DataSet).DeleteIndex(IndexName);
TClientDataSet(aDBGrid.DataSource.DataSet).AddIndex(Indexname,column.FieldName,[],column.FieldName,'',0);
TClientDataSet(aDBGrid.DataSource.DataSet).IndexName:=Indexname;
End
Else
Begin
OrderBy:=0;
IF TClientDataSet(aDBGrid.DataSource.DataSet).IndexName =IndexName Then
TClientDataSet(aDBGrid.DataSource.DataSet).DeleteIndex(IndexName);
TClientDataSet(aDBGrid.DataSource.DataSet).AddIndex(IndexName,column.FieldName,[],'','',0);
TClientDataSet(aDBGrid.DataSource.DataSet).IndexName:=IndexName;
End;
aDBGrid.DataSource.DataSet.EnableControls;
aDBGrid.DataSource.DataSet.First ;
End;procedure TFrmInStocks.DBGrid1TitleClick(Column: TColumn);
begin
inherited;
DBGridOrderby(DBGrid1,Column);
end;
以上为我写的排序的代码,但是当点的是一个计算字段,(在ClientDataSet中的fkCalculated类型字段)时就会报错,找不到这个字段名,直接查询的字段就没有问题的!请高手帮忙看下,谢谢了
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货