2013-03-28 3 views
0

컨트롤러 문제가 검도 UI Grid에 전달되는 JSON 데이터를 바인딩 할 수 없다는 문제로 인해이 문제가 발생했습니다. 이전에는 JavaScript 문제가 거의 없었지만 지금은 사라하지만 여전히 내 눈금이 표시되어 있지 않을 경우 어떤 결과 :검도 UI 그리드에서 JSON 데이터가 표시되지 않습니다.

Model에서 :

public object GetResult(string id) 
    { 
     var sqlCom = new SqlCommand("SELECT [No],[Desc],[Date],[Height],[Final] FROM [cr_form] WHERE [uId][email protected];", sqlConn); 
     sqlCom.Parameters.AddWithValue("@id", id); 

     StringBuilder sb = new StringBuilder(); 
     StringWriter sw = new StringWriter(sb); 
     JsonWriter jsonWriter = new JsonTextWriter(sw); 
     var rcrds = GETSQLRESULTS(sqlCom); 

     try 
     { 
      int i = 0; 
      if (rcrds != null || rcrds.HasRows) 
      { 
       //jsonWriter.WriteStartObject(); 
       while (rcrds.Read()) 
       { 
        jsonWriter.WriteStartObject(); //Changed 
        for (int j = 0; j < rcrds.FieldCount; j++) 
        { 
         jsonWriter.WritePropertyName(rcrds.GetName(j)); // column name 
         jsonWriter.WriteValue(rcrds.GetValue(j)); // value in column 
        } 
        i++; 
        jsonWriter.WriteEndObject(); //Changed 
       } 
       //jsonWriter.WriteEndObject(); 

      } 

     } 

     catch (Exception ex) { } 
     return jsonWriter; 
    } 

Controller에서 :

public ActionResult GetRecords() 
    { 
     var usrObj = new User(); 
     var jsnRslt = usrObj.GetResult(Session["Id"].ToString()); 
    //Till here jsnRslt contains this string: “{"No":null,"Desc":"asfasfasfasfasfasfasfasfasfasfasfasf","Date":"2013-03-27T00:00:00","Height":0,"Final":null,"No":null,"Desc":"etwetwetwetwet","Date":"2013-03-27T00:00:00","Height":0,"Final":0,"No":null,"Desc":"asfasfasfskfjklajsfkjasklfjklasjfklajsfkljaklsfjklasjfkljasfkljlasf","Date":"2013-03-27T00:00:00","Height":0,"Final":0,"No":null,"Desc":"askjfkajsfklaskjfkajsfklaskjfkajsfklaskjfkajsfklaskjfkajsfklaskjfkajsfklaskjfkajsfklaskjfkajsfklaskjfkajsfklaskjfkajsfklaskjfkajsfklaskjfkajsfkl","Date":"2013-03-27T00:00:00","Height":0,"Final":0,"No":null,"Desc":"safasfasfasfasfasf","Date":"2013-03-27T00:00:00","Height":0,"Final":0,"No":null,"Desc":"asfasf","Date":"2013-03-27T00:00:00","Height":0,"Final":0,"No":null,"Desc":"asfasfasf","Date":"2013-03-27T00:00:00","Height":2,"Final":0}” 

    //After Changes in the Model I am getting it in the required Array format: 
    //{"No":null,"Desc":"asfasfasfasfasfasfasfasfasfasfasfasf","Date":"2013-03-27T00:00:00","Height":0,"Final":null} 
    //{"No":null,"Desc":"etwetwetwetwet","Date":"2013-03-27T00:00:00","Height":0,"Final":0} 
    //{"No":null,"Des... 

     return Json(jsnRslt, JsonRequestBehavior.AllowGet);    
    } 

0에서:

<div> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      $("#grid").kendoGrid({ 
       dataSource: { 
        type: "json", 
        serverPaging: true, 
        pageSize: 5, 
        groupable: true, 
        selectable: "row", 
        transport: { read: { url: "Records", dataType: "json"} } 
       }, 
       height: 400, 
       scrollable: true, 
       sortable: true, 
       filterable: true, 
       pageable: true, 
       columns: [ 
         { field: "No", title: " No" }, 
         { field: "Desc", title: "Description" }, 
         { field: "Date", title: "Date" }, 
         { field: "Height", title: "Height" }, 
         { field: "Final", title: "Final" } 
        ], 
       dataBound: function() { 
        this.expandRow(this.tbody.find("tr.k-master-row").first()); 
       } 
      }); 
     }); 
    </script> 
</div> 

그러나이 모든 후 내가 볼 수있는 모든 빈 그리드입니다. JavaScript 콘솔에는 오류가 없습니다.

도와주세요

답변

2

서버에서 반환하는 JSON은 배열이어야합니다. 현재 여러 필드가 동일한 단일 오브젝트를 리턴하는 것 같습니다. 나는 다음과 같은 코드가 유용 할 것이라고 생각

[{"No":null,"Desc":"asfasfasfasfasfasfasfasfasfasfasfasf","Date":"2013-03-27T00:00:00","Height":0,"Final":null}, 
{"No":null,"Desc":"etwetwetwetwet","Date":"2013-03-27T00:00:00","Height":0,"Final":0}, 
{"No":null,"Desc":"asfasfasfskfjklajsfkjasklfjklasjfklajsfkljaklsfjklasjfkljasfkljlasf","Date":"2013-03-27T00:00:00","Height":0,"Final":0}] 
+0

감사합니다 ..하지만 내가 어떻게보다이 결과를 얻을 수 있습니다? 나는'Json (jsnRslt, JsonRequestBehavior.AllowGet);이 처리해 줄 것이라고 생각했다. – Maven

+0

내 코드에서 약간의 변경을했는데 JSON이 필요한 형식이지만 여전히 그리드에서 결과를 얻지 못하고있다. – Maven

0

당신이 어떤 문제가 있으면 알려 주시기 : 여기

는 JSON 모습 방법을 예입니다

$('#gridName').kendoGrid({ 
     dataSource: { 
      type: "odata", 
      transport: { 
       read: { 
        contentType: "application/json; charset=utf-8", 
        type: "POST", 
        url: 'YourURL' 
       } 
      }, 
      pageSize: 10, 
      type: "json" 
     }, 
     scrollable: true, 
     sortable: true, 
     resizable: true 

}) ;

+0

하지만 아무 효과가 없습니다. – Maven

+0

안녕하세요, 귀하의 GetRecords 메서드의 반환 형식을 JsonResult로 변경하고 YourURL은 '/ Controller/GetRecords'와 같을 것입니다. – ravisolanki07

+0

새 코드로 그리드를 얻을 수 없습니다 .. 아무것도 표시하지 않습니다. hwoever'JS 코드에 의해 사용하면 atleast grif 볼 수 있습니다. – Maven

0

내부 데이터 집합 데이터입니다.

data: @Html.Raw(Json.Encode(Model.RemoteObject)), 

RemoteObject는 모든 데이터를 포함하는 개체입니다.

0

먼저 tranport 읽기 URL을 확인합니다. GetRecords 명령을 실행하면 컨트롤러를 추적합니까?

transport: 
{ 
    read: { 
    //if you don't use area then remove it 
    url: "@Url.Action("GetRecords", new { area = "YourAreaName", controller = "YourControllerName" })", 
    dataType: "json" 
    } 
} 

여전히 다음, 문제를 해결 컨트롤러를 수정하지 않는 경우,

public ActionResult GetRecords([DataSourceRequest] DataSourceRequest request) 
{ 
    var usrObj = new User(); 
    var jsnRslt = usrObj.GetResult(Session["Id"].ToString()); 
    return Json(jsnRslt.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);    
} 

here's the link to understand the Kendo's ToDataSourceResult

관련 문제