Jump to content

DBTreeGrid при выборе родительского узла, переход по DataSource.


OlegTimkiv

Recommended Posts

Здравствуйте! Когда в "DBTreeGrid"  группировка "TreeKeyFields".  Выбираю родительский узел. DataSource - не переходит на дочерний узел. Как можно реализовать переход?

Link to comment
Share on other sites

9 minutes ago, Sherzod said:

Здравствуйте,

Простите, можете уточнить Ваш вопрос?

Когда выбрали "Bahamas", dataset  должен установиться на первую запись (Nassau). Когда переходим по дочерним записям, работает нормально.   

DBTreeGrid.jpg

Link to comment
Share on other sites

1 hour ago, OlegTimkiv said:

Выбираю родительский узел. DataSource - не переходит на дочерний узел

Думаю, что это нормальное поведение, не так ли?

1 hour ago, OlegTimkiv said:

Как можно реализовать переход?

Т.е., Вы хотите перейти на первый дочерний узел, который не имеет дочернего узла... ?!

Link to comment
Share on other sites

9 minutes ago, Sherzod said:

Думаю, что это нормальное поведение, не так ли?

Т.е., Вы хотите перейти на первый дочерний узел, который не имеет дочернего узла... ?!

Да

Link to comment
Share on other sites

Попробуйте следующий подход...:

1. UniDBTreeGrid -> ClientEvents -> ExtEvents -> function store.nodeexpand

function store.nodeexpand(sender, eOpts)
{
   var grid=this.grid, f;   
   if (sender.data.root==true) {return};
   
   sender.cascadeBy( function(){
        if (f) return false;
        
        if (!this.get("leaf")) {
            this.expand();
        } else {
            ajaxRequest(grid, "_sel", ["rec="+this.data[1]]);  // Индекс Вашего ключевого поля
            f=true; 
        } 
    }); 
}

2. UniDBTreeGrid -> OnAjaxEvent:

procedure TMainForm.UniDBTreeGrid1AjaxEvent(Sender: TComponent;
  EventName: string; Params: TUniStrings);
begin
  if EventName = '_sel' then
    TUniDBGrid(Sender).DataSource.DataSet.Locate('KeyField....', Params.Values['rec'], [])

end;

 

Link to comment
Share on other sites

17 hours ago, Sherzod said:

Попробуйте следующий подход...:

1. UniDBTreeGrid -> ClientEvents -> ExtEvents -> function store.nodeexpand


function store.nodeexpand(sender, eOpts)
{
   var grid=this.grid, f;   
   if (sender.data.root==true) {return};
   
   sender.cascadeBy( function(){
        if (f) return false;
        
        if (!this.get("leaf")) {
            this.expand();
        } else {
            ajaxRequest(grid, "_sel", ["rec="+this.data[1]]);  // Индекс Вашего ключевого поля
            f=true; 
        } 
    }); 
}

2. UniDBTreeGrid -> OnAjaxEvent:


procedure TMainForm.UniDBTreeGrid1AjaxEvent(Sender: TComponent;
  EventName: string; Params: TUniStrings);
begin
  if EventName = '_sel' then
    TUniDBGrid(Sender).DataSource.DataSet.Locate('KeyField....', Params.Values['rec'], [])

end;

 

Спасибо большое! Все работает.   

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...