zoukankan      html  css  js  c++  java
  • 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;

  • 相关阅读:
    P2319 [HNOI2006]超级英雄
    P4302 [SCOI2003]字符串折叠
    P1122 最大子树和
    HDU——2089 不要62
    P4555 最长双回文串
    P1463 [HAOI2007]反素数
    P2412 查单词
    P2787 语文1(chin1)- 理理思维
    P3078 [USACO13MAR]扑克牌型Poker Hands
    ubuntu中desktop与alternate版本的区别(转载)
  • 原文地址:https://www.cnblogs.com/false/p/2924240.html
Copyright © 2011-2022 走看看