AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.05.2007, 16:22   #1  
Rimantas is offline
Rimantas
Участник
 
304 / 16 (1) ++
Регистрация: 30.04.2004
Адрес: Utena , Lithuania
Grid и место курсора
Здраствуйте ,

Знаете как бывает - кажеться здесь будет всё просто , но ... Есть простой грид и после редактирования данных по условиям там обновляеться несколько строк в тот же самый грид . Проблема в том - как обновлят данные и снова поставит курсор , в тот же самое место , где он был . Я попpoбывал такое :

Код:
  ...
   MyTable mTbl, myTblChg;

   mTbl = MyTable_ds.cursor();
 
  ttsbegin;
  while select  myTblChg forupdate where ...
  {
  // update ... 
   }
  ttscommit;
  MyTable_ds.research();
  MyTable_ds.findRecord(mTbl);
  ...
Если использовать только refresh , то он не обновляеться данные . ...

Спасибо за помочь ! С уважением , Римантас
Старый 11.05.2007, 16:31   #2  
LEX is offline
LEX
NavAx
Аватар для LEX
NavAx Club
 
33 / 12 (1) ++
Регистрация: 06.04.2004
Если я правильно понимаю, то ответ на ваш вопрос можно увидеть здесь Восстановление позиционирования в грид
Старый 11.05.2007, 16:42   #3  
Rimantas is offline
Rimantas
Участник
 
304 / 16 (1) ++
Регистрация: 30.04.2004
Адрес: Utena , Lithuania
Цитата:
Сообщение от LEX Посмотреть сообщение
Если я правильно понимаю, то ответ на ваш вопрос можно увидеть здесь Восстановление позиционирования в грид
Да , вы правильно поняли . Но ето нерабоатет ... . У меня было присвоение :
mTbl = MyTable_ds.cursor() ;
поменял я , как там на примерах :
mTbl.data( MyTable );

Но всё равно -
MyTable_ds.research();
MyTable_ds.findRecord(mTbl);
непоставляет в старое место , скачает в первую строку ...

Римантас
Старый 11.05.2007, 16:51   #4  
LEX is offline
LEX
NavAx
Аватар для LEX
NavAx Club
 
33 / 12 (1) ++
Регистрация: 06.04.2004
А в каком методе у вас происходит обновление? В clicked?
Старый 11.05.2007, 17:01   #5  
dns is offline
dns
Участник
 
19 / 13 (1) ++
Регистрация: 11.05.2007
Цитата:
Сообщение от LEX Посмотреть сообщение
А в каком методе у вас происходит обновление? В clicked?
Прошу прощения - а причём тут Cliсked? у вас идёт явное присвоение
mTbl = MyTable_ds.cursor() ;
при котором mTbl всегда будет содержать текущий курсор.
попробуйте запоминать recId или курсор независящий от ds, например
myTable = maTable::findMyTable(mytable.field1);
Старый 11.05.2007, 17:03   #6  
Rimantas is offline
Rimantas
Участник
 
304 / 16 (1) ++
Регистрация: 30.04.2004
Адрес: Utena , Lithuania
Цитата:
Сообщение от LEX Посмотреть сообщение
А в каком методе у вас происходит обновление? В clicked?
Нет , в modified . Я писал , редагирую в гриде , тогда после редактирования есть запрос - "Обновлять ето для другх записей из той же самой серии ?" и если "Да" , то тогда хожу по while - делаю update для другиь записей . Вот полный код :

Код:
public boolean modified()
{
    Date dDat,dText;
    CIRFASCharacterValue spVar;
    CIRFASModelConfigId  spalva;
    boolean ret;

    asgmTbl.data( UTAsgmTable );
    asgms   = UTAsgm::find(asgmTbl.AsgmId);
    dDat    = asgmTbl.PlanDate;
    spVar   = asgmTbl.CharacterValue;
    spalva  = asgmTbl.ModelVariant;
    dText   = this.dateValue();

    ret = super();

    if ( ret && asgms.ColourNesc )
    {
       element.SpChng( 1, dText );
    }
    if ( ret && asgms.MailNesc )
    {
       if ( dText != dDat )
       {
          element.Emailinti(asgms.AsgmId,date2str(dDat,321,2,2,2,2,2),date2str(dText,321,2,2,2,2,2),spvr);
       }
    }
    if ( spvr )
    {
       UTAsgmTable_ds.research();
       UTAsgmTable_ds.findRecord(asgmTbl);
    }

 
    return ret;
}
// 

void SpChng( Int nFld, Date dText, Str cVal = "" )
{
   UTAsgmTable asgmTb;

   spvr = false;
   if ( box::yesNoCancel( "Ar keisti visiems spalv.variantams", DialogButton::Ok, "Klausimas !" ) )
   {
      ttsbegin;

      while select forupdate asgmTb
      index hint Index1
      where asgmTb.SalesId == asgmTbl.SalesId &&
      asgmTb.AsgmId == asgmTbl.AsgmId
      {
         if ( asgmTb.CharacterValue && asgmTb.RecId != asgmTbl.RecId )
         {
            if ( nFld == 1 )
               asgmTb.PlanDate = dText;
            if ( nFld == 2 )
               asgmTb.FactDate = dText;
            if ( nFld == 3 )
               asgmTb.AsgmValue = cVal;

            asgmTb.update();
         }
      }
      ttscommit;
      spvr = true;
   }
}
Вот как всё выглядит .
Старый 11.05.2007, 17:16   #7  
LEX is offline
LEX
NavAx
Аватар для LEX
NavAx Club
 
33 / 12 (1) ++
Регистрация: 06.04.2004
Посмотрите дебаггером, заходите ли вы в
X++:
if ( spvr ){...}
Старый 14.05.2007, 09:41   #8  
Rimantas is offline
Rimantas
Участник
 
304 / 16 (1) ++
Регистрация: 30.04.2004
Адрес: Utena , Lithuania
Цитата:
Сообщение от LEX Посмотреть сообщение
Посмотрите дебаггером, заходите ли вы в
X++:
if ( spvr ){...}
Надеюсь выходные были прекрасные ... . Хочу продолжить ету тему . LEX , я обязательно проверил с дебагером , как вы просили - условие правилное , там заходим обязательно ... Может быть ещё есть каких нибудь идей , как поставить гридный курсор на старое место , после обновления данных ?

Спасибо заранее ! С уважением , Римантас
Старый 14.05.2007, 09:55   #9  
LEX is offline
LEX
NavAx
Аватар для LEX
NavAx Club
 
33 / 12 (1) ++
Регистрация: 06.04.2004
А а в момент отработки метода UTAsgmTable_ds.findRecord(asgmTbl), asgmTbl точно у вас находится на той строке на которой был курсор?
Старый 14.05.2007, 09:57   #10  
Rimantas is offline
Rimantas
Участник
 
304 / 16 (1) ++
Регистрация: 30.04.2004
Адрес: Utena , Lithuania
Цитата:
Сообщение от Rimantas Посмотреть сообщение
Надеюсь выходные были прекрасные ... . Хочу продолжить ету тему . LEX , я обязательно проверил с дебагером , как вы просили - условие правилное , там заходим обязательно ... Может быть ещё есть каких нибудь идей , как поставить гридный курсор на старое место , после обновления данных ?

Спасибо заранее ! С уважением , Римантас
LEX , вы были правы ! Решение работает . Оказалось , что ето я сам заблудилься . В гриде с методом modified и ещё использоваю и gotFocus для своих условиях - пускать редактировать или нет ето поле . Так вот - я поменял в gotFocus переменные , корторые совпдали в modified и всё решилось - данные обновляеться и позиционирование правильное !

Спасибо ! Римантас
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axaptapedia: Filter-by-Grid Blog bot DAX Blogs 2 30.05.2012 13:39
Dynamics AX: DAX 4.0 Filter by Grid [Update] Blog bot DAX Blogs 0 27.04.2007 17:10
Advanced programming: Grid data and view manipulations batiskaf_new DAX: Программирование 15 21.06.2006 11:44
Сохранение настроек GRID (ширина и порядок колонок) liza DAX: Программирование 1 25.07.2003 22:20

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 17:15.