DHTMLX Grid Pulling Дополнительные данные
Я пытаюсь создать приложение, в которое пользователи могут отправлять свое рабочее время, но у меня возникают проблемы с добавлением дополнительных данных в таблицу.
Например: если бы пользователь вводил там код сотрудника 0000 в столбце Код сотрудника, поле имени сотрудника нужно было бы обновить, чтобы прочитать "Джон Доу". Все эти данные хранятся в базах данных на серверной части, и я смог доступ к нему при обновлении, например. Если страница будет перезагружена после того, как новая строка будет создана и данные будут присутствовать, она извлечет правильные данные, но я не хочу, чтобы им приходилось обновлять страницу, чтобы сделать это. Как я могу получить дополнительные данные после обновления ячейки.
Сетка создается на странице с помощью JavaScript следующим образом:
timesheetGrid.setColumnIds("Column Names, Column Names");
timesheetGrid.setImagePath("codebase/imgs/"); //set the image path for the grids icons
timesheetGrid.setInitWidths("70,100,100,100,70,100,150,100,70,70,100,70,70,*,*"); //sets the initial widths of columns
timesheetGrid.setColAlign("center,center,center,center,center,center,center,center,center,center,center,center,center,left,left"); //sets the alignment of columns
timesheetGrid.setColTypes("edn,ro,dhxCalendar,ro,edn,ro,ed,ro,ro,ro,ed,edn,ch,txt,ro"); //sets the types of columns
timesheetGrid.setColSorting("str,str,date,date,str,str,str,str,str,str,str,str,str,str,str"); //sets the sorting types of columns
timesheetGrid.setDateFormat("%Y-%m-%d"); //Set the Date Format to be used in the Grid
timesheetGrid.attachHeader("#text_filter,#text_filter,#text_filter,,#text_filter,#text_filter,#text_filter,#text_filter,#text_filter,#text_filter,#text_filter,#text_filter,,,");
timesheetGrid.setColumnHidden(3,true);
timesheetGrid.enableEditEvents(true,false,true);
timesheetGrid.init();
//timesheetGrid.makeFilter("WeekEnding",0); //TODO: Add Filter For Week Ending
//this.lockRow(id, true); //Make Specific Row Read Only TODO: Non Active Week Rows Read Only
timesheetGrid.load("data/timesheets.php");
var dpg = new dataProcessor("data/timesheets.php");
dpg.enableDataNames(true); // will use names instead of indexes
dpg.init(timesheetGrid);
PHP используется для извлечения данных из правильных путей
require("../codebase/connector/grid_connector.php");//adds the connector engine
$conn = new GridConnector($res,"MySQL"); //initializes the connector object
if ($conn->is_select_mode()) {//code for loading data
SQL Code is HERE
}else { //code for other operations - i.e. update/insert/delete
OTHER SQL CODE IS HERE
}
Поскольку данные являются конфиденциальными, я не могу вывести их извинения за неудобства. Любая помощь приветствуется.
1 ответ
Если данные, которые вы предоставляете, представляют собой XML, вы можете прикрепить событие к вашей сетке и вызвать этот grid.updateFromXML("data/timesheets.php"); Это проанализирует и раскрасит всю информацию сетки
Если вы хотите обновить только строку, которую вы обновили, вы можете отправить через GET идентификатор строки, и он будет только анализировать и рисовать строку, которую вы отправляете grid.updateFromXML("data/timesheets.php? For=" + row_id));
Полный код будет примерно таким:
dpg.defineAction ("update", myUpdate);
function myUpdate(tag){
timesheetGrid.updateFromXML("data/timesheets.php?for="+tag.getAttribute("sid"));
return true;
}
Если данные, которые вы получаете, не отформатированы в формате XML, я боюсь, что вам нужно будет обновить значения из строки вручную через то же событие.