procedure Tmoduleform.DBGrid1TitleClick(Column: TColumn); begin if clientdataset1.IsEmpty then exit; clientdataset1.DisableControls; if indexname='降序' then //按升序排列 begin if clientdataset1.IndexName='Indexname' then clientdataset1.DeleteIndex('Indexname'); clientdataset1.AddIndex('Indexname',column.FieldName,[],column.FieldName,'',0); ClientDataSet1.IndexName:='Indexname'; indexname:='升序'; end else //按降序排列 begin if clientdataset1.IndexName='Indexname' then clientdataset1.DeleteIndex('Indexname'); clientdataset1.AddIndex('Indexname',column.FieldName,[],'','',0); ClientDataSet1.IndexName:='Indexname'; indexname:='降序'; end; clientdataset1.EnableControls; isenabled; showstate; end;
Look at the Help: IndexFields or IndexName property of TClientDataset
Delphi Object and Component Reference IndexName property (TCustomClientDataSet)Identifies an index for the client dataset.Delphi syntax:property IndexName: string;C++ syntax:__property AnsiString IndexName = {read=GetIndexName, write=SetIndexName};DescriptionUse IndexName to specify an alternative index for a client dataset. If IndexName is empty, the dataset抯 sort order is based on the IndexFieldNames property or on its default ordering in the data packet. Default ordering is determined by the predefined index, DEFAULT_ORDER.If IndexName contains a valid index name, then that index is used to determine sort order of records.Note: IndexFieldNames and IndexName are mutually exclusive. Setting one clears the other.
利用clientdataset新建一个字段,类型为fkInternalCalc,这个字段本身就是排序的
用SQL语句实现自定义排序应该更灵活。
begin
if clientdataset1.IsEmpty then
exit;
clientdataset1.DisableControls;
if indexname='降序' then //按升序排列
begin
if clientdataset1.IndexName='Indexname' then
clientdataset1.DeleteIndex('Indexname');
clientdataset1.AddIndex('Indexname',column.FieldName,[],column.FieldName,'',0);
ClientDataSet1.IndexName:='Indexname';
indexname:='升序';
end
else //按降序排列
begin
if clientdataset1.IndexName='Indexname' then
clientdataset1.DeleteIndex('Indexname');
clientdataset1.AddIndex('Indexname',column.FieldName,[],'','',0);
ClientDataSet1.IndexName:='Indexname';
indexname:='降序';
end;
clientdataset1.EnableControls;
isenabled;
showstate;
end;
IndexName property (TCustomClientDataSet)Identifies an index for the client dataset.Delphi syntax:property IndexName: string;C++ syntax:__property AnsiString IndexName = {read=GetIndexName, write=SetIndexName};DescriptionUse IndexName to specify an alternative index for a client dataset. If IndexName is empty, the dataset抯 sort order is based on the IndexFieldNames property or on its default ordering in the data packet. Default ordering is determined by the predefined index, DEFAULT_ORDER.If IndexName contains a valid index name, then that index is used to determine sort order of records.Note: IndexFieldNames and IndexName are mutually exclusive. Setting one clears the other.
为什么不直接用SQL里的Order By?????????????????????????
为什么不直接用SQL里的Order By?????????????????????????
为什么不直接用SQL里的Order By?????????????????????????为什么不直接用SQL里的Order By?????????????????????????
为什么不直接用SQL里的Order By?????????????????????????
为什么不直接用SQL里的Order By?????????????????????????
为什么不直接用SQL里的Order By?????????????????????????