Fórum Ordenar CxGrid em GridMode #411103
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
Curtir tópico
+ 0Post 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
Gostei + 4
Mais Posts
14/10/2013
Graziani
Gostei + 0
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.
Gostei + 0
17/10/2013
Thiago Irrazabal
Veja se soluciona o teu problema.
Att,
Thiago Irrazabal de Oliveira.
Gostei + 0
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;
Gostei + 0
24/07/2022
Weberson Mendes
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)