2016-06-14 2 views
2

У меня есть функция jqGrid следующим образом в ASP.NET MVC, используя бритвуПередача значений в jqGrid пользовательской функции для проверки дубликатов строк

$(function() { 
    $("#grid").jqGrid({ 
     url: "/Common/GetCategoryList", 
     editurl: '/Common/CategoryEdit', 
     datatype: 'json', 
     mtype: 'Get', 
     colNames: ['Id', 'Name', 'Created On', 'Status'], 
     colModel: [ 
      { key: true, name: 'id', editable: false, formatter: 'integer', viewable: false, hidden: true }, 
      { 
       key: false, 
       name: 'name', 
       editable: true, 
       editrules: { custom: true, custom_func: checkforduplicates, required:true } 

      }, 

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

function checkforduplicates(value, colname) { 
    var grid = $("#grid"); 

    var textsLength = grid.jqGrid("getGridParam", "data"),myName = $.map(textsLength, function (item) { return item.name }); 
    alert("textsLength is " + textsLength); 
    alert(JSON.stringify(myName)); 
    var textsLength2 = JSON.stringify(textsLength); 
    alert("textsLength 2 is " + textsLength2); 


    var myAttrib = $.map(textsLength, 
     function (item) { return item.name }); 
    alert("myAttrib is " + myAttrib); 

    var count = 0; 
    for (var k in textsLength) { 
     if (textsLength.hasOwnProperty(k)) { 
      ++count; 
     } 
    } 

    var text, i; 
    alert("value of count is " + count); 

    for (i = 0; i < count; i++) { 
     text = myAttrib[i]; 
     if (value === text) { 
      return [false, " - Duplicate category name."]; 
     } 
    } 
    return [true, ""]; 
} 

Все предупреждения выше возвращают пустые значения. Таким образом, функция не получает значения из сетки, даже если имеется более 20 строк, и я вводим повторяющееся значение и нажимаю submit.

РЕДАКТИРОВАТЬ: - При использовании grid.jqGrid ("getGridParam", "данные"), где тип данных "локальный" вместо "" JSON, возвращает массив значений

+0

Я только что добавил var textLength = grid.jqGrid ("getRowData"); вместо var textLength = grid.jgGrid ("getGridParam", "data"). Я думаю, что это работает сейчас. – Chakra

ответ

2

Reference из JQGrid Doc. Я мог бы понять, что

grid.jqGrid ("getGridParam", "данные")

всегда возвращает пустой array.Try, чтобы изменить код следующим образом

сетку. jqGrid ("getGridParam", "colModel")

Я надеюсь, что это поможет вам

+0

@JayarajK Когда я использую grid.jqGrid («getGridParam», «data»), где тип данных «local» вместо «json», массив возвращает значения. – Chakra

+0

@JayarajK Я заменил данные colModel. Но те же результаты. – Chakra

+1

Убедитесь, что вы получаете какие-либо ошибки в консоли –

0

Я только что изменил TO var textsLength = grid.jqGrid("getRowData"); ОТ var textsLength = grid.jgGrid("getGridParam", "data"); Я думаю, что это работает сейчас. -

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