排序方式写好后,单击表头出现了错误"一串英文的错误",意思是连接违反了某某地址.
方法如下:
procedure TfmRemoteLoadData.GridSort(Sender: Tobject);
var
s:string;
i:integer;
begin
if not TDBGridEh(sender).DataSource.DataSet.Active then exit;
if TDBGridEh(sender).DataSource.DataSet.State in [dsInsert, dsEdit] then exit;
for i := 0 to TDBGridEh(sender).SortMarkedColumns.Count-1 do
begin
if TDBGridEh(sender).SortMarkedColumns[i].Field.FieldKind<>fkData then
begin
continue;
end;
if TDBGridEh(sender).SortMarkedColumns[i].Title.SortMarker = smUpEh then
s := s + TDBGridEh(sender).SortMarkedColumns[i].FieldName + ', '
else
s := s + TDBGridEh(sender).SortMarkedColumns[i].FieldName + ' DESC , ';
end;
TCustomADODataSet(TDBGridEh(sender).DataSource.DataSet).Sort:=Copy(s,1,Length(s)-2);
end;请哪位大侠知道告诉我,谢谢!!
方法如下:
procedure TfmRemoteLoadData.GridSort(Sender: Tobject);
var
s:string;
i:integer;
begin
if not TDBGridEh(sender).DataSource.DataSet.Active then exit;
if TDBGridEh(sender).DataSource.DataSet.State in [dsInsert, dsEdit] then exit;
for i := 0 to TDBGridEh(sender).SortMarkedColumns.Count-1 do
begin
if TDBGridEh(sender).SortMarkedColumns[i].Field.FieldKind<>fkData then
begin
continue;
end;
if TDBGridEh(sender).SortMarkedColumns[i].Title.SortMarker = smUpEh then
s := s + TDBGridEh(sender).SortMarkedColumns[i].FieldName + ', '
else
s := s + TDBGridEh(sender).SortMarkedColumns[i].FieldName + ' DESC , ';
end;
TCustomADODataSet(TDBGridEh(sender).DataSource.DataSet).Sort:=Copy(s,1,Length(s)-2);
end;请哪位大侠知道告诉我,谢谢!!
procedure TCustomDBGridEh.TitleClick(Column: TColumnEh);
var s,cFieldName:string;
i:integer;
DataSet:TDataSet;
begin
//2005-10-18 jzl update
Try
Try
if UsedTitleSort then begin
if not Assigned(DataSource) then Exit;
DataSet:=Column.Grid.DataSource.DataSet;
if Column.Field.FieldKind=fkLookup then
cFieldName:=Column.Field.KeyFields
else if Column.Field.FieldKind=fkCalculated then
cFieldName:=Column.Field.KeyFields
else
cFieldName:=Column.FieldName;
if DataSet is TCustomADODataSet then begin
s:=TCustomADODataSet(DataSet).Sort;
if s='' then begin
s:=cFieldName;
end
else begin
if Pos(cFieldName,s)<>0 then begin
i:=Pos('DESC',s);
if i<=0 then begin
s:=s+' DESC';
end
else begin
Delete(s,i,4);
end;
end
else begin
s:=cFieldName;
end;
end;
TCustomADODataSet(DataSet).Sort:=s;
end
else if DataSet is TClientDataSet then begin
if TClientDataSet(DataSet).indexfieldnames<>'' then
begin
i:=TClientDataSet(DataSet).IndexDefs.IndexOf('i'+Column.FieldName);
if i=-1 then
begin
with TClientDataSet(DataSet).IndexDefs.AddIndexDef do
begin
Name:='i'+Column.FieldName;
Fields:=Column.FieldName;
DescFields:=Column.FieldName;
end;
end;
TClientDataSet(DataSet).IndexFieldNames:='';
TClientDataSet(DataSet).IndexName:='i'+Column.FieldName;
end
else
begin
TClientDataSet(DataSet).IndexName:='';
TClientDataSet(DataSet).IndexFieldNames:=column.fieldname;
end;
end;
end;
Except
End;
Finally
if Assigned(FOnTitleClick) then FOnTitleClick(Column);
End;//old if Assigned(FOnTitleClick) then FOnTitleClick(Column);
end;