2013-06-24 3 views
0

У меня есть эта сеткадобавить новую строку в пустой кендо сетку с

$("#email-grid").kendoGrid({ 
    dataSource: { 
     transport: { 
      read: { 
       url: "operations/get_emails_sales_reps.php?salesRepsId=" + salesRepsId, 
       type: "GET" 
      }, 
      update: { 
       url: "operations/edit_email.php?salesRepsId=" + salesRepsId, 
       type: "POST", 
       complete: function (e) { 
        $("#email-grid").data("kendoGrid").dataSource.read(); 
       } 
      }, 
      destroy: { 
       url: "operations/delete_email.php", 
       type: "POST", 
       complete: function (e) { 
        $("#email-grid").data("kendoGrid").dataSource.read(); 
       } 
      }, 
      create: { 
       url: "operations/add_email.php?salesRepsId=" + salesRepsId, 
       type: "POST", 
       complete: function (e) { 
        $("#email-grid").data("kendoGrid").dataSource.read(); 
       } 
      }, 
     }, 


     schema: { 
      data: "data", 
      total: "data.length", //total amount of records 
      model: { 
       id: "SalesRepId", 
       fields: { 
        EmailType: { 
         defaultValue: { 
          EmailTypeId: 2, 
          EmailTypeName: "Home" 
         } 
        }, 
        EmailText: { 
         type: "string" 
        }, 
        IsMainEmail: { 
         type: "boolean" 
        } 
       } 
      } 

     }, 
     pageSize: 5, 
    }, 
    height: 250, 
    filterable: true, 
    sortable: true, 
    pageable: true, 
    reorderable: false, 
    groupable: false, 
    batch: true, 
    navigatable: true, 
    toolbar: ["create", "save", "cancel"], 
    editable: true, 
    columns: [{ 
     field: "EmailType", 
     title: "Type", 
     editor: EmailTypeDropDownEditor, 
     template: "#=EmailType.EmailTypeName#" 
    }, { 
     field: "EmailText", 
     title: "Email", 

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

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

    ] 
}); 

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

<?php 
require_once ("../lib/salesrep.php"); 
require_once ("../lib/helper.php"); 

// add the header line to specify that the content type is JSON 
header("Content-type: application/json"); 

$options = array(); 

$result = SalesRep::getRepEmails($_GET["salesRepsId"]); 
if (isset($result) && $result != null) { 
    $result = _object_to_array($result); 
    if (isset($result[0]) && is_array($result)) { 
     for ($i = 0; $i < count($result); $i++) { 
      $result[$i]["EmailType"] = array("EmailTypeName" => $result[$i]["EmailType"], "EmailTypeId" => $result[$i]["EmailTypeId"]); 
     } 
    } else { 
     $result["EmailType"] = array("EmailTypeName" => $result["EmailType"], "EmailTypeId" => $result["EmailTypeId"]); 
    } 


    if (isset($result) || $result != null) { 
     echo "{\"data\":" . json_encode($result) . "}"; 
    } else { 
     echo "{\"data\": {} }"; 
    } 
} 
?> 

когда сетка имеет одну запись или больше, я могу добавьте новую запись без каких-либо ошибок, но когда нет записей в сетке и попробуйте добавить новую запись. Я получаю эту ошибку

Uncaught TypeError: Cannot read property 'length' of undefined

, пожалуйста, как я могу это исправить ??

+0

Я решил эту проблему, спасибо – Kamal

+1

Пожалуйста, ответ на ваш вопрос так, что другие облицовочные те же трудности могут получить помощь от вас .. :) – Paritosh

ответ

0

Я решил эту проблему, отредактировав файл php. когда результат нулевой (пустой) я должен возвращать пустой массив JSON как этот

else { 
     // the result is null 

    echo "{\"data\": [] }"; 
} 
+0

Это не очень хороший способ опубликовать и ответить на вопрос, самостоятельно только. Http: //stackoverflow.com/questions/how-to-ask –

+0

@dotNETkid нет абсолютно никакой проблемы, если вы ответите на свой вопрос, даже если он предпочитает если ваш пост не получит ответа. –

+0

полная работа crud по [сетке кендо доступна здесь] (http://conceptf1.blogspot.com/2013/11/kendo-ui-data-source-crud.html) –