2013-06-19 3 views
0

Я использую этот код для сетки Кено UIдобавить функцию записи в сетке Кендо UI вызывается много раз

function loadPhoneGrid(salesRepsId){ 
         $("#phone-grid").kendoGrid({ 
         dataSource: { 
          transport: { 
           read: { 
            url: "operations/get_phones_sales_reps.php?salesRepsId="+salesRepsId, 
            type: "GET" 
           }, 
           update: { 
            url: "operations/edit_phone_number.php?salesRepsId="+salesRepsId, 
            type: "POST" 
           }, 
           destroy: { 
            url: "operations/delete_phone.php", 
            type: "POST" 
           }, 
           create: { 
            url: "operations/add_phone.php?salesRepsId="+salesRepsId, 
            type: "POST", 
           }, 
          }, 
          schema: { 
           data:"data", 
           total: "data.length", //total amount of records 
           model: { 
            id: "PhoneId", 
            fields: { 
             PhoneType: { defaultValue: { PhoneTypeId: 1, PhoneTypeName: "Work"} }, 
             PhoneNumber: { type: "string" }, 
             IsMainPhone: {type: "boolean", editalbe:true}, 
            } 
           } 

          }, 
          pageSize: 5, 
         }, 
         height: 250, 
         filterable: true, 
         sortable: true, 
         pageable: true, 
         reorderable: false, 
         groupable: false, 
         batch: true, 
         toolbar: ["create", "save", "cancel"], 
         editable: true, 
         columns: [ 
          { 
           field:"PhoneType", 
           title:"Type", 
           editor: PhoneTypeDropDownEditor, 
           template: "#=PhoneType.PhoneTypeName#" 
          }, 
          { 
           field: "PhoneNumber", 
           title:"Phone Number", 

          }, 
          { 
           field: "IsMainPhone", 
           title:"Is Main", 
           width: 65, 
           template: function (e){ 
            if(e.IsMainPhone== true){ 
             return '<img align="center" src ="images/check-icon.png" />'; 
            }else{ 
             return ''; 
            } 
           } 
           // hidden: true 

          }, 
          { command: "destroy", title: "&nbsp;", width: 90 }, 

          ], 


        }); 

       } 

код на стороне сервера есть (add_phone.php)

<?php 
require_once("../lib/Phone.php"); 

$phone = array(); 
foreach($_POST as $name => $value){ 
    $phone[$name] = $value; 
} 
Phone::AddPhoneNumber($_GET["salesRepsId"], $phone); 
?> 

Впервые я добавил новую запись. add_phone.php вызывает один раз, и все работает нормально. Во второй раз (без обновления страницы), когда я пытаюсь добавить новую запись, add_phone.php вызывается дважды. Одна из них содержит первую запись, которая была добавлена ​​в базу данных раньше, а вторая - новые данные.

В результате у меня есть 3 записи (2 одинаковых данных первой вставки) и один новый.

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

сначала нажмите кнопку Сохранить (ложный, (111) 111-1111, 4, факс) // после того как я войти в этот телефон (111) 111-1111

второй щелчок на кнопке сохранения (false, (111) 111-1111, 4, факс) в дополнение к (false, (222) 222-2222, 3, Work) // после того, как я добавил это (222) 222-2222

Любая помощь?

ответ

0

Возможно, ваш запрос ajax вызывает ошибку. Вы можете увидеть это, подписавшись на событие ошибки вашего источника данных.

В случае ошибки данные не синхронизируются в вашем источнике данных. В вашем случае, я думаю, что ваш dataitem остается в «грязном режиме», поэтому источник данных пытается вставить их для каждой синхронизации ...

Смежные вопросы