cxGrid控件过滤排序和TClientDataSet同步
1.过滤同步
procedure TReport10Form.cxGridViewDataControllerFilterChanged(Sender: TObject);
var
cds: TClientDataSet;
begin
cds := cxGridView.DataController.DataSource.DataSet as TClientDataSet;
try
cds.Filtered := false;
cds.Filter := cxGridView.DataController.filter.filtertext;
cds.Filtered := True;
except
cds.Filter:='';
end;
end;
2.排序同步
procedure TaxisDataSet(Column: TColumnEh; var aDataSet: TClientDataSet);
var
IndexDataSet: ^TClientDataSet;
IsDesc: boolean;
begin
IndexDataSet := @aDataSet;
// if LastColumn <> nil then //中文长度为2
// LastColumn.Title.Caption := Copy(LastColumn.Title.Caption, 1, Length(LastColumn.Title.Caption) - 2);
// LastColumn := Column;
if (IndexDataSet.IndexDefs.Count > 0) and (IndexDataSet.IndexDefs[0].Fields = Column.FieldName) then
begin
if IndexDataSet.IndexDefs[0].Options = [ixDescending] then
IsDesc := false
else
IsDesc := true;
end
else
begin
IsDesc := false;
end;
IndexDataSet.DisableControls();
// self.cdsVMember.IndexFieldNames := Column.FieldName;
IndexDataSet.IndexDefs.Clear();
with IndexDataSet.IndexDefs.AddIndexDef do
begin
Fields := Column.FieldName;
if IsDesc then
begin //12.8.206 lero
Name := 'DescIndex' + 'Tmp'; //'tmp'代替 Column.FieldName 避免Name长度过长 引起错误
Options := [ixDescending];
// Column.Title.Caption := Column.Title.Caption + '↓'; //
end
else
begin
Name := 'Index' + 'Tmp';
// Column.Title.Caption := Column.Title.Caption + '↑'; //
end;
end;
IndexDataSet.IndexName := IndexDataSet.IndexDefs.Items[0].Name;
IndexDataSet.EnableControls();
end;
3.动态的显示数据源数据
var Tableview:TcxGridDBTableView; //定义
......
TableView := TcxGridDBTableView(cxGrid1.CreateView(TcxGridDBTableView));
with TableView do
begin
DataController.DataSource := datasource2; // 确定数据源
self.cxGrid1Level1.GridView:= TableView; //绑定视图
(DataController as IcxCustomGridDataController).DeleteAllItems; //删除所有列
(DataController as IcxCustomGridDataController).CreateAllItems(false);//创建数据源中的所有列
end;
for i:=0 to tableview.ColumnCount-1 do
begin
//判断数据视图中是否包含产品两字的列,以便加长宽度显示
if AnsiContainsText(tableview.Columns.DataBinding.FieldName,'产品')=true then
begin
tableview.Columns.Width:=120 ;
end else
begin
tableview.Columns.Width:=50 ;
end;
end;
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 开发的设计和重构,为开发效率服务
· 从零开始开发一个 MCP Server!
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Ai满嘴顺口溜,想考研?浪费我几个小时
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)