2013-11-15 3 views
0

im работает над проектом MVC, который также включает проект API WEB. В основном, я делаю вызов из моего проекта MVC в проект API для запроса данных, которые появятся в jqGrid. Однако я не могу получить какие-либо данные для загрузки в сетке, он просто говорит «загрузка», а затем ничего не происходит. Вот как у меня есть все установки:Данные jqGrid не загружаются

Мой контроллер на стороне Web API:

static readonly IWellRepository repository = new WellRepository(); 

    WellsMigrationEntities db = new WellsMigrationEntities(); 

    // GET api/values 
    public dynamic Get(string sidx, string sord, int page, int rows) 
    { 
     var wells = repository.GetAll() as IEnumerable<vwWell>; 
     var pageIndex = Convert.ToInt32(page) - 1; 
     var pageSize = rows; 
     var totalRecords = wells.Count(); 
     var totalPages = (int)Math.Ceiling((float)totalRecords/(float)pageSize); 
     wells = wells.Skip(pageIndex * pageSize).Take(pageSize); 
     return new 
     { 
      total = totalPages, 
      page = page, 
      records = totalRecords, 
      rows = (
       from well in wells 
       select new 
       { 
        //i = well.APINumber, 
        cell = new string[] { 
        well.APINumber, 
        well.CountyName, 
        well.LeaseName, 
        well.WellNumber 
        } 
       }).ToArray() 
     }; 
    } 

Мой репозиторий метод, который вызывается в контроллере:

WellsMigrationEntities db = new WellsMigrationEntities(); 

    public IEnumerable<vwWell> GetAll() 
    { 
     return db.vwWells.Where(o => o.CountyName == "Butte").ToList(); 
    } 

и наконец вот мой JqGrid то будет загружаемой в моем проекте MVC:

<script> 
var API_URL = "http://localhost:41389/api/well"; 
jQuery("#gridMain").jqGrid({ 
    url: API_URL, 
    datatype: 'json', 
    mtype: 'GET', 
    pager: '#pagernav', 
    sortable: true, 
    height: 200, 
    viewrecords: true, 
    jsonReader: { 
     repeatitems: false, 
     page: function() { return 1; }, 
     root: function (obj) { return obj; }, 
     records: function (obj) { return obj.length; } 
    }, 
    colNames: ['APINumber', 'CountyName', 'LeaseName', 'WellNumber'], 
    colModel: [{ name: 'APINumber', index: 'APINumber', width: 40, editable: true, edittype: 'text' }, 
    { name: 'CountyName', index: 'CountyName', editable: true, edittype: 'text', width: 70 }, 
    { name: 'LeaseName', index: 'LeaseName', editable: true, edittype: 'text', width: 70 }, 
    { name: 'WellNumber', index: 'WellNumber', editable: true, edittype: 'text' } 
    ], 
    caption: "jqGrid", 
    autowidth: true 

}); 

Независимо от того, что я пытаюсь, данные не загрузятся! Heres, что результат от моего Get moethod в моем контроллере:

{{"$id":"1","total":13,"page":1,"records":260,"rows":[{"$id":"2","cell":["00700001","Butte","Parrott Inv. Co.","9A-3"]},{"$id":"3","cell":["00700002","Butte","Wild Goose Gas Unit 1","9"]},{"$id":"4","cell":["00700003","Butte","Wild Goose Gas Unit 1","10"]},{"$id":"5","cell":["00700004","Butte","Wild Goose Gas Unit 1","6"]},{"$id":"6","cell":["00700005","Butte","Capital Co.","1"]},{"$id":"7","cell":["00700006","Butte","Estes","1"]},{"$id":"8","cell":["00700007","Butte","Capital Co.","E-1"]},{"$id":"9","cell":["00700008","Butte","Donohoe Fee","1"]},{"$id":"10","cell":["00700009","Butte","Donohoe Fee","2"]},{"$id":"11","cell":["00700010","Butte","T. W. Rodgers","1"]},{"$id":"12","cell":["00700011","Butte","Wahl Community","1"]},{"$id":"13","cell":["00700012","Butte","Towne","1"]},{"$id":"14","cell":["00700013","Butte","Wild Goose Gas Unit 1","1"]},{"$id":"15","cell":["00700014","Butte","Neaves-Parrott Inv.","2"]},{"$id":"16","cell":["00700015","Butte","Neaves-Parrott Inv.","7"]},{"$id":"17","cell":["00700016","Butte","Parrott Inv. Co.","1"]},{"$id":"18","cell":["00700018","Butte","Parrott Investment Co.","1"]},{"$id":"19","cell":["00700019","Butte","Urich Oil -Parrott","2"]},{"$id":"20","cell":["00700020","Butte","Parrott Investment Co.","2"]},{"$id":"21","cell":["00700021","Butte","Parrott Investment Co.","3"]}]}} 

Почему данные не загружаются для меня?

UPDATE:

, кстати, это URL, который отправляется в мой контроллер от jqGrid

http://localhost:41389/api/well?_search=false&nd=1384556871623&rows=20&page=1&sidx=&sord=asc 

ответ

0

Ваша проблема заключается в структуре данных, которые вы возвращающегося для строк. Когда вы возвращаете ячейку, вы не передаете какую-либо «ключевую» информацию, которую ваша сетка может анализировать для столбцов. Таким образом, просто возвращает массив объектов vwWell

// GET api/values 


public dynamic Get(string sidx, string sord, int page, int rows) 
    { 
     var wells = repository.GetAll() as IEnumerable<vwWell>; 
     var pageIndex = Convert.ToInt32(page) - 1; 
     var pageSize = rows; 
     var totalRecords = wells.Count(); 
     var totalPages = (int)Math.Ceiling((float)totalRecords/(float)pageSize); 
     wells = wells.Skip(pageIndex * pageSize).Take(pageSize); 
     var jsonData = new 
     { 
      total = totalPages, 
      page = page, 
      records = totalRecords, 
      rows = wells.ToArray() //We need an array of objects for the rows 
     }; 
     return jsonData; 
    } 

Примечание Вам необходимо включить System.Web.Mvc пространство имен, если это не входит в

+0

Можете ли вы вернуть объект Json с помощью проекта Web API? Говорит, что Json не существует в этом текущем контексте, и ive добавил пространство имен MVC. – Snelson

+0

О, я не заметил, что вы используете Web API. Я не уверен. Если это так, возвращаемый тип должен быть ActionResult –

+0

Да, я использую веб-интерфейс API для хранения всех моих моделей и соединений с базой данных. на моей стороне MVC все im делает отображение сетки.Что-то не так с моим Json-форматом? – Snelson

0

Ну, я понял это, и я чувствую себя глупо ,

Видимо, отладка в Chrome не работает. Изменено развертывание в IE, и теперь он отлично работает. -_-

+0

Я рад, что вы разобрались в сетке. Я не уверен, как ваш API извлекает данные, но похоже, что вы можете столкнуться с кросс- проблема с доменным именем. Chrome не разрешает междоменные запросы по умолчанию, но IE делает это. Для отключения в Chrome см. этот пост. http://stackoverflow.com/questions/4819060/allow-google-chrome-to-use -xmlhttprequest к нагрузке-а-URL-с-а-локальный_файл –

0

Я столкнулся с аналогичной проблемой. После отладки в IE я обнаружил одну проблему. Click button (function() {}

Даже после исправления я все еще сталкиваюсь с проблемой. Данные не загружаются в jqGrid. Интересно, является надежным управление, глядя на таких вопросах. Вот мой вопрос отвечал. Смотрите, если вы, ребята, можете помочь.

jqGrid not rendering data - Headers visible

Я решил эту проблему. Пожалуйста, смотрите мой пост для деталей. Это был атрибут jsonReader проблема была решена.

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