2014-01-21 3 views
0

Я добавил пользовательское текстовое поле в dhtmlschedular.js ноуправления потоком DHTMLX Schedular для сохранения данных с помощью настраиваемого поля

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

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

я сделал до сих пор: - лайтбокс: { секции: [ {имя: "Описание", высота: 200, map_to: "Текст", введите: "текстовое поле", фокус: истинный}, ]} , {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(); 
    } 
} 

};

ответ

0

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

Если вам нужно добавить другой элемент управления в детали формы, вы можете перезаписать 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

+0

Спасибо Павел за вашу помощь. – prabhu