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, я боюсь, что вам нужно будет обновить значения из строки вручную через то же событие.

Другие вопросы по тегам