2014-05-20 3 views
2

У меня есть 3 формы, Associate.cs, HomeController.cs, Index.cshtml.DataTable в JSON контролер в jqGrid

я загружаю DataTable из Associate.cs и использовать этот код, чтобы получить его в формат JSON.

public string GetAssociateFromDB() 
     //code omitted 
       var json = JsonConvert.SerializeObject(dt, Formatting.Indented); 
       jsonData = json; 
      }    
     } 
     return jsonData; //return is good 

Я называю это от HomeController.cs.

public JsonResult GetJsonData() 
    { 
     Associate associate = new Associate(); 
     string jsonData = associate.GetAssociateFromDB(); 
     System.Diagnostics.Debug.WriteLine(jsonData); //for testing purposes 
     return Json(jsonData, JsonRequestBehavior.AllowGet); //need to pass to `Index.cshtml` 
    } 

Однако этот код не попасть, если я не поставил метод в этом блоке:

[HttpGet] 
    public ActionResult Index() 
    { 
     GetJsonData(); //if not called here, it never gets hit. 

     ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application."; 

     return View(); 
    } 

Затем я пытаюсь передать его Index.cshtml через $.getJSON метод, но никогда не достигает этого.

jQuery(document).ready(function() { 
     var mydata; 
    $.getJSON('@Url.Action("HomeController", "GetJsonData")', function(data) { 
     datatype: 'json' 
     mydata = data; 
     console.log(data); //unsure if this works or not. 
    }); 

Я тогда пытаюсь поставить эти данные для jqGrid (это только при коде выше):

$("#grid").jqGrid({ 
    data: mydata, 
    datatype: "json", 
    width: '100%', 
    colNames: ["Seq ID", "Fund ID", "Name", "Fund", "Bonus", "Allocation", "Blank", "Begin", "End"], 
    colModel: [{ 
     name: 'seqid', 
     index: 'seqid', 
     editable: true, 
    },....//Code omitted 

Я не могу показаться, чтобы получить данные из Controller в Index.cshtml. Я читал в блоге, что есть проблема с cache в IE 8, и это то, что я тестирую, но я уверен, что это не моя первоначальная проблема.

Я читал документацию jQGrid и искал много раз, но единственный пример для такого рода вещей - для PHP или в другом контексте. Я попытался поставить [HttpGet] выше метода GetJsonData, и это тоже не сработало.

Также важно отметить, что я не писал много (любого) jQuery раньше.

+0

@ Url.Action ("HomeController", "GetJsonData")»это правильно? – SivaRajini

+0

Я не уверен. Я не могу заставить код ударить его. –

+0

это не ударит. Потому что неправда – SivaRajini

ответ

1

Попробуйте этот код ниже.

Url.Action('actionname','controllername') 

JavaScript:

$(document).ready(function() { 
      var mydata; 
     $.getJSON('@Url.Action("GetJsonData", "Home")', function(data) { 
      datatype: 'json' 
      mydata = data; 
      gridFn(data); 
     }); 

function gridFn(data) 
{ 
//here grid code 
} 
+0

Спасибо. «Предупреждение (данные)» было заполнено правильно. Знаете ли вы о передаче данных из указанного метода в '$ (« # grid »). JqGrid ('? –

+0

u передает данные одной функции.see мое обновление – SivaRajini

+0

Это не так. Я сделал именно то, что вы «function gridFn (data) {// grid code}' –

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