управление потоком расписания dhtmlx для сохранения данных через настраиваемое поле

Я добавил пользовательское текстовое поле в dhtmlschedular.js, но

Я не могу проследить путь. как мое значение пользовательского поля может попасть на контроллер.

или полный поток dhtmlx для сохранения данных в БД.

Я сделал до сих пор: -

lightbox: {
        sections: [
            {name: "description", height: 200, map_to: "text", type: "textarea",             focus: true },
            { name:"prabhu", height:200, map_to:"txt1", type:"dhiraj"},
            {name: "time", height: 72, type: "time", map_to: "auto"}]


    dhiraj: {
        render:function(sns){
            return "<div class='dhx_cal_ltext' style='height:60px;'>Text&nbsp;<input id='txt1' name='txt1' type='text'><br/>Details&nbsp;<input id='calendarDetailId' name='txt2' type='text'></div>";
        },
        set_value:function(node,value,ev){
            node.childNodes[1].value=value||"";
            node.childNodes[4].value=ev.details||"";
        },
        get_value:function(node,ev){
            ev.location = node.childNodes[4].value;
            return node.childNodes[1].value;
        },
        focus:function(node){
            var a=node.childNodes[1]; a.select(); a.focus(); 
        }
    }
};

person prabhu    schedule 21.01.2014    source источник


Ответы (1)


Вы можете добавить настраиваемое поле без изменения источников компонента (я бы рекомендовал избегать их изменения, когда это возможно)

Если вам нужно добавить еще один элемент управления в форму сведений, вы можете перезаписать объект scheduler.configuration.lightbox.sections (в вашей странице/файле скрипта, а не в исходниках)

Свойство 'map_to' определяет свойство объекта данных (события), которое должно быть сопоставлено с входными данными. Если управление должно быть сопоставлено с несколькими полями, вы можете использовать map_to:"auto" и получить нужные поля из объекта события вручную.

Код на вашей странице может выглядеть следующим образом:

//defining a control
scheduler.form_blocks["dhiraj"]={
    render:function(sns){
        return "<div class='dhx_cal_ltext' style='height:60px;'>" +
                "Text&nbsp;<input id='txt1' name='txt1' type='text'><br/>" +
                "Details&nbsp;<input id='calendarDetailId' name='txt2' type='text'>" +
                "</div>";
    },
    set_value:function(node,value,ev){
        //get values from event manually
        node.childNodes[1].value = ev.txt1 || "";
        node.childNodes[4].value = ev.txt2 || "";
    },
    get_value:function(node,ev){
        //assign values to event object
        ev.txt1 = node.childNodes[1].value;
        ev.txt2 = node.childNodes[4].value;
    },
    focus:function(node){
        var a=node.childNodes[1]; a.select(); a.focus();
    }
};

//add control to the details form
scheduler.locale.labels.section_prabhu = "";//labels for inputs are defined as 'seciton_'+inputName
scheduler.config.lightbox.sections = [
    {name:"description", height:200, map_to:"text", type:"textarea" , focus:true},
    {name:"prabhu", height:200, map_to:"auto", type:"dhiraj"},//here it is
    {name:"time", height:72, type:"time", map_to:"auto"}
];

//init scheduler after control is defined
scheduler.init('scheduler_here',new Date(),"week");

Новый ввод будет отображать значения свойств 'txt1' и 'txt2', как видно из определения. Когда изменения будут сохранены, компонент отправит все значения событий на сервер. Пользовательские значения также будут отправлены.

В зависимости от того, как вы обрабатываете обновление на стороне сервера, вам следует либо добавить настраиваемые поля в конфигурацию dhtmlxConnector, либо получить их из параметров GET/POST.

http://docs.dhtmlx.com/scheduler/lightbox_editors.html http://docs.dhtmlx.com/scheduler/custom_lightbox_editor.html

person Paul    schedule 26.01.2014
comment
Спасибо Павел за помощь. - person prabhu; 11.02.2014