Ordenar CxGrid em GridMode
30/12/2011
0
Estou com o seguinte problema:
Tenho uma cxGrid que está com o GridMode ativo (TRUE) no DataController, pois preciso selecionar um ou mais registros da mesma. O problema é que perco a funcionalidade de ordenar através dos títulos da cxGrid.
Alguém sabe como resolver este problema?
Ou é só desabilitando (FALSE) o GridMode? Neste caso existe outra maneira de selecionar um ou mais registros na cxGrid para buscar as informações através GetSelectedBookmark?
Obrigado.
Marcelo Domingues
Post mais votado
17/10/2013
veja se isso "sana" teu problema.
Primeiramente declare essa variável no private da tua UNITE
Crescente: Boolean;
em seguida no oncolumnheaderclick da tua cxgrid coloque esse código.
var NomeCampo: string; begin NomeCampo := TcxGridDBTableView(Sender).Columns[AColumn.Index].DataBinding.FieldName; if Crescente then Crescente := TcxGridTableView(Sender).Columns[AColumn.Index].SortOrder = soAscending else Crescente := TcxGridTableView(Sender).Columns[AColumn.Index].SortOrder = soDescending; Titulo(Crescente, NomeCampo, TClientDataSet(TcxGridDBTableView(Sender).DataController.DataSource.DataSet)); end;
Logo em seguida crie uma outra procedure chamada TItulo;
procedure Titulo(crescente: boolean; campo: string; Dataset: TClientDataSet);
De o CTRL + SHIFT + C e coloca esse código
begin if Dataset.IsEmpty then exit; if Dataset.IndexName <> '' then begin Dataset.DeleteIndex(Dataset.IndexName); Dataset.IndexName := ''; end; if not (DataSet.FieldByName(campo).DataType in [ftBlob, ftMemo]) then begin if crescente then Dataset.AddIndex(campo, campo, [ixDescending], campo, '', 0) else Dataset.AddIndex(campo, campo, [], '', '', 0); Dataset.IndexName := campo; end; Dataset.First; end;
Esperto que tenha te ajudado.
Att,
Thiago Irrazabal de Oliveira.
Thiago Irrazabal
Mais Posts
15/10/2013
Marcelo Domingues
O que tentei fazer e até deu certo foi no evento onHeaderClick das colunas chamar o SELECT para carregar a CxGrid e no ORDER BY fazer de acordo com cada coluna, mas não fica muito funcional na programação.
Então acabei deixando do jeito que estava sem ordenar.
17/10/2013
Thiago Irrazabal
Veja se soluciona o teu problema.
Att,
Thiago Irrazabal de Oliveira.
22/04/2019
Giorgeano
Gostaria obter mas informações sobre como utilizar o seguinte procedimento:
procedure T_frmConsProdutos.OrderBy(Coluna : Integer);
begin
cxGrid1DBTableView1.GetColumnByFieldName('Item').SortOrder := soNone;
cxGrid1DBTableView1.GetColumnByFieldName('Unidade').SortOrder := soNone;
cxGrid1DBTableView1.GetColumnByFieldName('Descricao').SortOrder := soNone;
cxGrid1DBTableView1.GetColumnByFieldName('Embalagem').SortOrder := soNone;
cxGrid1DBTableView1.GetColumnByFieldName('PrcVenda').SortOrder := soNone;
cxGrid1DBTableView1.GetColumnByFieldName('ICMS').SortOrder := soNone;
cxGrid1DBTableView1.GetColumnByFieldName('Sld_N').SortOrder := soNone;
cxGrid1DBTableView1.GetColumnByFieldName('Sld_F').SortOrder := soNone;
cxGrid1DBTableView1.GetColumnByFieldName('IT_BX').SortOrder := soNone;
cxGrid1DBTableView1.GetColumnByFieldName('TIPO').SortOrder := soNone;
case Coluna of
1 : begin cxGrid1DBTableView1.GetColumnByFieldName('Item').SortOrder := soAscending; iPesquisa := 1; end;
2 : begin cxGrid1DBTableView1.GetColumnByFieldName('Unidade').SortOrder := soAscending; iPesquisa := 2;end;
3 : begin cxGrid1DBTableView1.GetColumnByFieldName('Descricao').SortOrder := soAscending; iPesquisa := 3;end;
4 : begin cxGrid1DBTableView1.GetColumnByFieldName('Embalagem').SortOrder := soAscending; iPesquisa := 4;end;
5 : begin cxGrid1DBTableView1.GetColumnByFieldName('PrcVenda').SortOrder := soAscending; iPesquisa := 5;end;
6 : begin cxGrid1DBTableView1.GetColumnByFieldName('ICMS').SortOrder := soAscending; iPesquisa := 6;end;
7 : begin cxGrid1DBTableView1.GetColumnByFieldName('Sld_N').SortOrder := soAscending; iPesquisa := 7;end;
8 : begin cxGrid1DBTableView1.GetColumnByFieldName('Sld_F').SortOrder := soAscending; iPesquisa := 8;end;
9 : begin cxGrid1DBTableView1.GetColumnByFieldName('IT_BX').SortOrder := soAscending; iPesquisa := 9;end;
10 : begin cxGrid1DBTableView1.GetColumnByFieldName('Tipo').SortOrder := soAscending; iPesquisa := 10;end;
end;
case iPesquisa of
1 : dxStatusBar1.Panels[1].Text :='Pesquisa por Código';
2 : dxStatusBar1.Panels[1].Text :='Pesquisa por Unidade de Medida';
3 : dxStatusBar1.Panels[1].Text :='Pesquisa por Descrição';
4 : dxStatusBar1.Panels[1].Text :='Pesquisa por Embalagem';
5 : dxStatusBar1.Panels[1].Text :='Pesquisa por Preço de Venda';
6 : dxStatusBar1.Panels[1].Text :='Pesquisa por ICMS';
7 : dxStatusBar1.Panels[1].Text :='Pesquisa por Saldo Fiscal';
8 : dxStatusBar1.Panels[1].Text :='Pesquisa por Saldo Real';
9 : dxStatusBar1.Panels[1].Text :='Pesquisa por Item Baixa';
10 : dxStatusBar1.Panels[1].Text :='Pesquisa por Tipo do Produto';
end;
end;
24/07/2022
Weberson Mendes
Clique aqui para fazer login e interagir na Comunidade :)