2017-05-09 5 views
2

MVC 용 Kendo DropdownList를 사용하여 DropdownList에서이 데이터를 허용하지 않는 이유를 확인하려고합니다.검도 UI 드롭 다운 목록에서 JSON 데이터를 허용하지 않습니까?

"{\"표 \ ": [{\"ORG_ID \ "265498 \"COMPORGID

는 SQL 동작에서 원시 데이터

@(Html.Kendo().DropDownList() 
     .Name("CompanyList") //The name of the DropDownList is mandatory. It specifies the "id" attribute of the widget. 
     .DataTextField("Table") 
     .DataValueField("COM_NAME") 
     .DataSource(source => 
     { 
      source.Custom() // Read(read => 
      .Type("json") 
      .Transport(transport => 
       { 
        transport.Read("GetallCompanies", "Home"); 
       }) 

      .ServerFiltering(true); //If true, the DataSource will not filter the data on the client. 
     }) 
     .SelectedIndex(0) //Select the first item. 

)는이 형식을 갖는다 \ "COM_NAME \": \ "ABC Rentals \"}, \ "ORG_ID \": 164929, \ "COMPORGID \ : 239698 \"COM_NAME \ ": \"Asbury Machine Shop \ "} ]} "

Kendo docs 및 기타 SO 사례를 참조하십시오. JSON을 유효성 검사기 도구에 넣으십시오. 올바르게 형식이 지정되어 있습니다.

페이지에서 드롭 다운에 왼쪽 중괄호가 있습니다 (상단 항목으로, 클릭 할 때 수십 개의 : 정의되지 않음).

DataTextField는 JSON 배열의 "테이블"때문에 "테이블"이라고 불렀지 만 COM_NAME으로 설정되었습니다. 컨트롤러 방법,

[HttpGet] 
    public JsonResult GetallCompanies() 
    { 
     var ddx = CompInfo.GetAllCompanies(); //returns dataset 
     string thedata = JsonConvert.SerializeObject(ddx); 
     return Json(thedata, JsonRequestBehavior.AllowGet); 
    } 
+0

''CompInfo.GetAllCompanies()'에서 무엇을 얻을 ddx'는 무엇입니까? – Shai

+0

원래 "Table \"로 시작하는 JSON이 반환되었지만 답변에 따라 SerializeObject를 제거하기 위해 바뀌 었으므로 지금은 단일 Table [0]과 많은 행을 가진 DataSet을 반환합니다. – rogersbra1

답변

0

난 당신이 클라이언트에 반환하기 전에 Json 방법으로 ddx aswell에 SerializeObject를 사용할 필요가 있다고 생각하지 않습니다. Json 방법의

[HttpGet] 
public JsonResult GetallCompanies() 
{ 
    var ddx = CompInfo.GetAllCompanies(); //returns dataset 
    //string thedata = JsonConvert.SerializeObject(ddx); 
    return Json(ddx); 
} 

요약 :

는 JSON 지정된 데이터 객체를 직렬화 Microsoft.AspNetCore.Mvc.JsonResult 객체를 생성하면에 GetAllCompanies을 변경 시도 할 수 있습니다.

+0

예, 변경되었으므로 데이터 세트를 검도 DDL로 반환하지만 아무 것도 표시되지 않지만 새로운 동작은 DDL을 클릭하면 컨트롤러 메소드가 다시 읽혀지고 이전에는 수행되지 않았습니다. return Json() 줄에 디버그 중단 점이 있으므로 click 이벤트에서 예상대로 읽습니다. 그러나 어떤 데이터도 보여주지 않을 것입니다. – rogersbra1

+0

['serverFiltering'] (http://docs.telerik.com/kendo-ui/controls/editors/combobox/serverfiltering) 속성으로 인해 각 클릭에서'read'가 트리거 된 것으로 의심됩니다. – Sandman

+0

어느 쪽이든 읽는 것 같습니다. 그리고 여전히 데이터가 나타나지 않습니다.이 컨트롤이 데이터 표시를 거부하는 이유에 대한 디버그 정보를 콘솔에 보낼 수있는 방법이 있습니까? 행을 반복하고 목록을 작성하는 데 몇 가지 기능이 필요합니까? – rogersbra1

0

이 시도 :

  1. 서버 측 : 밖으로 댓글을 달았 JsonConvert.SerializeObject 라인을 둡니다.

  2. 클라이언트 측 : (예를 들어, .SelectedIndex(0) 후) 드롭 다운리스트 구성에 다음을 추가합니다

    .Schema(schema => schema.Data("Table"))

+0

Json (ddx.는 "table"을 허용하지 않지만 "Tables"가 테이블 [0] .Rows와 함께이 작업을 수행하고 있음을 보여줍니다. 또한 예제에서 나온 간단한 드롭 다운 목록 데이터로 문자열을 캐스팅하려고 시도합니다 어떤 일이 일어나는지보기 위해 그것을 전달하십시오. – rogersbra1

+0

나는 내 해결책을 수정했다. 나는 이것이 효과가 있다고 생각한다. – Shai