
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.14.87] |
![]() |
|
Страницы: (4) « Первая ... 2 3 [4] все ( Перейти к последнему сообщению ) |
![]() |
Сообщ.
#46
,
|
|
Задача: выполнить цепочку AJAX процедур, когда одна вызывает выполнение другой
Решение: Рассмотрим на примере двух DBGrid работающих по принципу Master-Detail При изменении строки в первом гриде вызываем ajax процедуру на фильтрацию данных во втором гриде. А после перечитывания и отрисовки данных второго грида автоматически вызываем ajax процедуру для вывода сообщений или выполнения других функций на JS. На форме: DBGrid1, DBGrid2, Edit1, AjaxScripter1 Оба грида подключены к одной и той же таблице (через соответствующие компоненты), у которой ключевое поле TEST_ID. При выборе записи в первой таблице возьмём значение TEST_ID этой записи, пропишем его в Edit1 и отфильтруем по нему DBGrid2 (через компонент Table2, к которому подключен грид). После этого установим фокус на первую строку во второй таблице и выведем сообщение. ![]() ![]() function DBGrid1JSRowChanged($sender, $params) { ?> params = DBGrid1.getTableModel().getValue(0, DBGrid1.getFocusedRow()); <?php echo $this->DBGrid1->ajaxCall("xxx", array("DBGrid1")); ?> <?php } function xxx($sender, $params) { $this->Edit1->Text = $params[0]; $this->Table2->Filter = "TEST_ID=$params[0]"; $this->Table2->refresh(); $this->AjaxScripter1->Script = ' //DBGrid1.getTableColumnModel().setColumnVisible(0, false); - здесь мы могли бы установить видимость колонки в гриде или сделать другие установки var xx =document.getElementById("Edit1").value; DBGrid2.getSelectionModel().setSelectionInterval(0, 0); '; } function Page10AfterShow($sender, $params) { echo ' <script type="text/JavaScript"> DBGrid1.getTableColumnModel().setColumnVisible(0, false); DBGrid2.getTableColumnModel().setColumnVisible(0, false); </script> '; } function DBGrid2JSRowChanged($sender, $params) { ?> params = DBGrid2.getTableModel().getValue(0, DBGrid2.getFocusedRow()); <?php echo $this->DBGrid1->ajaxCall("yyy", array("DBGrid2")); ?> <?php } function yyy($sender, $params) { $this->AjaxScripter1->Script = ' alert(\'Я сработал после обновления грида 2\'); '; } компонент AjaxScripter не входит в стандартную поставку, но давно описан здесь Delphi for PHP (RAD PHP XE): Компоненты (сообщение #2410953) Сообщения были разделены в тему "Пустая вкладка при старте проекта" |
![]() |
Сообщ.
#47
,
|
|
Задача: Получить список методов объекта JS
Решение: используем функцию ![]() ![]() function Page1BeforeShow($sender, $params) { echo ' <script type="text/javascript"> function fnShowProps(obj, objName){ var result = ""; for (var i in obj) result += objName + "." + i + " = " + obj[i] + "<br />\n"; document.write(result); } </script> '; } function Label1JSClick($sender, $params) { ?> //begin js // fnShowProps(window.location, "location"); // fnShowProps(Label1, "Label1"); fnShowProps(LabeledEdit1, "LabeledEdit1"); //end <?php } Сообщения были разделены в тему "пытаюсь разместить пробную страничку на хостинге" |
![]() |
Сообщ.
#48
,
|
|
Проблема: Deployment Wizard не всегда копирует нужные файлы в папку rpcl
Решение: делает это самостоятельно 1. выполняем Deployment Wizard 2. создаём файл copy_rpcl.bat кидаем его в ту директорию, в которую экспортировали проект 3. выполняем содержимое copy_rpcl.bat ![]() ![]() @echo off rem кидаем файл в нужную папку и запускаем, файлы будут скопированы в подпапку этой папки set folderRPCLsource=C:\Program Files\Embarcadero\RadPHP\3.0\rpcl rem папка куда копировать (если rpcl, то скопирует в текущую папку, в подпапку rpcl) set folderRPCLdest=rpcl cls; echo 1 - копировать всю папку RPCL (не включая svn) echo 2 - копировать только необходимый минимум папок RPCL (не включая svn) echo 0 - прекратить это безобразие :) echo; set /P variantcopy="Введите вариант копирования: " if "%variantcopy%" == "1" goto all ELSE goto minimum if "%variantcopy%" == "0" goto end1 :minimum rem здесь сами себе задаём минимум необходимых папок mkdir "%folderRPCLdest%" xcopy "%folderRPCLsource%" "%folderRPCLdest%\*.php" /Y mkdir "%folderRPCLdest%\qooxdoo" xcopy "%folderRPCLsource%\qooxdoo" "%folderRPCLdest%\qooxdoo" /R/E/K/Y mkdir "%folderRPCLdest%\adodb" xcopy "%folderRPCLsource%\adodb" "%folderRPCLdest%\adodb" /R/E/K/Y mkdir "%folderRPCLdest%\js" xcopy "%folderRPCLsource%\js" "%folderRPCLdest%\js" /R/E/K/Y mkdir "%folderRPCLdest%\xajax" xcopy "%folderRPCLsource%\xajax" "%folderRPCLdest%\xajax" /R/E/K/Y mkdir "%folderRPCLdest%\language" xcopy "%folderRPCLsource%\language" "%folderRPCLdest%\language" /R/E/K/Y mkdir "%folderRPCLdest%\smarty" xcopy "%folderRPCLsource%\smarty" "%folderRPCLdest%\smarty" /R/E/K/Y echo 'Скопирован необходимый МИНИМУМ'; goto end; :all mkdir "%folderRPCLdest%" xcopy "%folderRPCLsource%" "%folderRPCLdest%" /R/E/K/Y echo 'Скопировано ВСЁ'; goto end; :end pause :end1 теперь в папке экспорта находятся нужные файлы для переноса на сервер |
![]() |
Сообщ.
#49
,
|
|
Проблема: QDBGrid1 на QWindow1 не работает, работает когда оба просто на форме
Решение: ![]() ![]() function QWindow1BeforeShow($sender, $params) { $this->QDBGrid1->dumpRPC(); } |
![]() |
Сообщ.
#50
,
|
|
Проблема: В RadPhp XE не получается подключится к MSSQL 2000 с помощью DataExplorer
Решение: Качаем новый клиент MSSQL отсюда http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c6c3e9ef-ba29-4a43-8d69-a2bed18fe73c а конкретно этот: http://go.microsoft.com/fwlink/?LinkId=123717&clcid=0x409 |