На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА
Прежде чем задать вопрос, зайдите в раздел FAQ, возможно там уже есть ответ на него.
Если вы хотите вставить код в сообщение, то пожалуйста выделяйте его тегом [code=dfp] ... [/сode].
Для этого используйте кнопку [code=dfp] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Delphi for PHP.
Модераторы: ViktorXP, vicis
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> Проблемы с DBRepeater
    Привет всем!

    Обнаружил такую вот проблему. На DBrepeater лежат компоненты-Image и несколько Label. Image использую для имитации нажатия кнопок для действия(редактировать,удалить и т.д.) через AJAX.
    В событии onDetail компонента такой код
    ExpandedWrap disabled
          function DBRepeater1Detail($sender, $params)
          {
          $this->Label1->Caption=$this->Query1->caption;
          $this->Label2->Caption="id=".$this->Query1->id;
          $this->Image1->name="Image".$this->Query1->id;
          }

    в IDE все работает хорошо,на локальном апаче работает только при первоначальной загрузке страницы(т.е. только в новой сессии,насколько я понимаю).После обновления через AJAX по кнопке на странице или при обновлении средствами браузера имя Image становится одинаковым для всех выведенных и равным последнему(нижнему) на DBRepeater и приводит к тому,что нажимается только верхняя кнопка при клике на любой другой.
    C лэйблами такого нет!(И при присваивании им Link тоже все нормально) Мои танцы с бубном не увенчались успехом. В чем проблема не понятно,может даже и не в DBRepeater. Пробовал подсунуть php.ini локальному апачу от IDE и много чего еще-не помогает.Help!

    В аттаче-пример

    Прикреплённый файлПрикреплённый файлproba.zip (4,29 Кбайт, скачиваний: 1058)


    Бился день.Только отправил на форум-нашел решение-присваивать имя в событии onBeforeShow компонента Image и только через $sender
    ExpandedWrap disabled
          function imgTrashBeforeShow($sender, $params)
          {
          $sender->name="imgT".$this->Query1->id;
       
          }


    Дополнение.
    Вылезла еще одна проблема. Картинок-"кнопок" несколько в зависимости от текущего статуса документа. Клик по соответствующей кнопке вызывает отпределенные действия и изменяет статус документа на свой. Хотел показывать\прятать такие картинки-"кнопки" в зависимости от статуса документа(например, статус "в корзине"-тогда кнопка корзины уже не должна показываться),однако при первом же клике по к-л кнопке такие кнопки прячутся сразу на всех записях.(в IDE тоже). Решения пока нету.
    Сообщение отредактировано: Alex2011 -
      Всем привет! Возникла проблемка с DBREPEATER ом. Точнее с Label- амии расположенные на нем, почему то не могу изменить размер шрифта цвет шрифта Label-ов. Использую HTML5Builder может кто сталкивался с этим недостатом? За ранее спасибо.
        на сколько я помню в компонентах не ве свойства задействованы
        импользуй стили
          Попробуй как у меня выше (через $sender).
            делаю так
            ExpandedWrap disabled
                  function CheckBox1BeforeShow($sender, $params)
                  {
                  $sender->name="CheckBox".$this->MySQLTable1->A_ID;
                  if ($this->MySQLTable1->A_PRICE_CHECK==1)
                  {
                  $sender->Caption="Оплачено";
                  $sender->Checked=true;
                  }
                    else  $sender->Caption=$this->MySQLTable1->A_ID;
               
                  }
              }


            Но отмечены получаются все чекбоксы

            Смотрю html код, а там все чекбоксы с одинаковым ID )) вопрос

            как из RadPhp сменить, сгенерить id ? через компонент - есть ли свойство ?
              Попробуй добавить else $sender->Checked=false; чтобы получилось так.
              ExpandedWrap disabled
                if ($this->MySQLTable1->A_PRICE_CHECK==1)
                 
                    {
                 
                    $sender->Caption="Оплачено";
                 
                    $sender->Checked=true;
                 
                    }
                else $sender->Checked=false;
                Почему человек так устроен, когда проблема лежит не виду и порой решается штатно, в место этого лезем в дебри разбираем до основания предмет изучения, тратим часы на чтение книг и прочих вещей, а тут приходит "умный человек" и говорит

                "А вы магнитофон с паузы снимите, он и заиграет" ) ))


                Спасибо Alex2011 ))


                Добавлено
                Как все таки сменить ID ? )
                  В предыдущей ветке ответил про компоненты. Да, тут еще в else {} включи код для Caption. Я не писал, думаю, ты понял все.
                  ID на странице-это свойство "Name" компонента. И в коде у тебя вроде стоит его изменение...Странно...Хотя-привыкай! Странности только начинаются! :D
                  Сообщение отредактировано: Alex2011 -
                    ExpandedWrap disabled
                      <input name="CheckBox2" value="2" style=" font-family: Tahoma; font-size: 11px;   cursor: default;" checked="checked" tabindex="0" id="CheckBox1" type="checkbox">


                    вот код, имя меняется а ид нет
                      Добавил в код строку как эксперимент поле Image


                      повесил на другой обработчки события

                      ExpandedWrap disabled
                         function DBRepeater1Detail($sender, $params)
                            {
                                    $this->CheckBox->name="CheckBox".$this->MySQLTable1->A_ID;
                                           $this->Image1->Name="Image".$this->MySQLTable1->A_ID;
                            if ($this->MySQLTable1->A_PRICE_CHECK==1)
                            {
                             $this->CheckBox->Caption="Оплачено";
                             $this->CheckBox->Checked=true;
                            }
                              else
                              {
                               $this->CheckBox->Caption=$this->MySQLTable1->A_ID;
                               $this->CheckBox->Checked=false;
                              }      
                            }


                      смотрю html код

                      ExpandedWrap disabled
                        <img id="Image1" src="" border="0" height="89" width="105">
                        <img id="Image2" src="" border="0" height="89" width="105">
                        <img id="Image3" src="" border="0" height="89" width="105">




                      с имейдж работает
                      ExpandedWrap disabled
                        <table id="CheckBox1_table" style=" font-family: Tahoma; font-size: 11px;   cursor: default;height:20px;width:120px;" cellpadding="0" cellspacing="0">
                        <tbody><tr><td width="20"><input name="CheckBox1" value="Оплачено" style=" font-family: Tahoma; font-size: 11px;   cursor: default;" checked="checked" tabindex="0" id="CheckBox1" type="checkbox"></td><td><label for="CheckBox1">Оплачено</label></td></tr>
                        </tbody></table>


                      а чекбокс отказывается .. хелп ? )
                        Значит исходники нужно смотреть и править.
                          Цитата Alex2011 @
                          Значит исходники нужно смотреть и править.

                          Эх, сам я вряд ли разберусь (
                            Думаю, что это не так просто окажется(правка исходников) -могут вылезти косяки с позиционированием элементов, так как правил CSS может не оказаться в сформированной странице для всех чекбоксов.(Уверен, что так и будет, если не использовать стили для них)
                            Сообщение отредактировано: Alex2011 -
                              Причем чек бокс стоит внутри таблицы, а ID <table id="TCheckBox2_table" таблице передается
                                Для чего надо присваивать уникальное имя? Чтобы потом передать на сервер? Может оказаться, что все можно по-другому решить.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0401 ]   [ 17 queries used ]   [ Generated: 28.03.24, 18:42 GMT ]