2013-08-13 3 views
0

EXT.NET을 사용 중입니다. 질문이 있습니다. json 데이터를 그리드 패널에로드하는 데 문제가 있습니다. 내 코드는 아래와 같습니다. 트리 항목을 클릭하면 selectNode 함수가 제대로 실행되지만 JSON 결과를 Grid 패널에로드 할 수 없습니다. 어떻게 그리드 패널에로드 할 수 있습니까? 현재 흰색 빈 페이지가 나타납니다. 여기 ext.net 그리드 패널에 JSON을로드하는 방법

@model System.Collections.IEnumerable 

@{ 
    Layout = null; 
    var X = Html.X(); 
} 

<script type="text/javascript"> 

    var selectNode = function (item, record, node, index, event) { 

     Ext.Ajax.request({ 
      url: "/Popup/GetDepartmentUser", 
      method: "POST", 
      params: { 
       id: record.data.id 
      }, 

      callback: function (options, success, response) { 
       if (Ext.decode(response.responseText).success == false) { 
        Ext.Msg.alert("Failed", response.responseText); 
       } else { 
        var grid = App.theGrid; 

        grid.show(); 
        grid.getStore().loadData(Ext.decode(response.responseText)); 
        //Ext.Msg.alert("Success", response.responseText); 
       } 
      }, 

      failure: function (response, options) { 
       Ext.MessageBox.alert("Failed", response.responseText); 
      }, 

      timeout: '10000' 

     }); 

    } 
</script> 


<!DOCTYPE html> 

<html> 
<head> 
    <title>Search User</title> 
</head> 
<body> 

    @(Html.X().ResourceManager()) 

    @(X.Panel() 
     .Layout(LayoutType.Border) 
     .Width(780) 
     .Height(460) 
     .Items(
      X.TreePanel() 
       .Title("Department") 
       .ID("theTree") 
       .Region(Region.West) 
       .Width(250) 
       .Height(460) 
       .Border(false) 
       .Split(true) 
       .UseArrows(true) 
       .Listeners(l => l.ItemClick.Fn = "selectNode") 
       .Store(
        Html.X().TreeStore() 
         .Proxy(
          Html.X().AjaxProxy().Url(Url.Action("GetDepartmentChildren")) 
         ) 
       ) 
       .Root(
        Html.X().Node().NodeID("0").Text(ViewBag.OrganizationName) 
       ), 


      Html.X().GridPanel() 
       .ID("theGrid") 
       .Title("User Information") 
       .Region(Region.Center) 
       .Width(530) 
       .Height(460) 
       .Border(false) 
       .Store(Html.X().Store() 
        .AutoLoad(false) 
        .Model(Html.X().Model() 
         .Fields(
          new ModelField("FirstName", ModelFieldType.String), 
          new ModelField("LastName", ModelFieldType.String), 
          new ModelField("Email", ModelFieldType.String) 
         ) 
        ) 
      //.DataSource(Model) 
        .Reader(reader => reader.Add(Html.X().JsonReader().Root("data"))) 
       ) 

       .ColumnModel(
        Html.X().Column() 
         .Text("First Name") 
         .DataIndex("FirstName") 
         .Flex(1), 
        Html.X().Column() 
         .Text("LastName") 
         .DataIndex("LastName") 
         .Width(70) 
         .Align(Alignment.Center), 
        Html.X().Column() 
         .Text("Email") 
         .DataIndex("Email") 
         .Width(140) 

       ) 
       .View(Html.X().GridView().StripeRows(true).TrackOver(true)) 
     ) 
    ) 



</body> 
</html> 

내가 loadData 방법 전용 모델 기록 데이터를 판독 것으로 JSON 결과 데이터

{ 
    "success":true, 
    "total":2, 
    "data":"[ 
    { 
    \"FirstName\":\"BlahBlah1\", 
    \"LastName\":\"Kwak\", 
    \"Email\":\"[email protected]\" 
    }, 
    { 
    \"FirstName\":\"BlahBlah2\", 
    \"LastName\":\"Kwak\", 
    \"Email\":\"[email protected]\" 
    } 
    ]" 
} 

답변

0

이다.

그래서 loadData 대신 loadRawData 메소드를 사용하여 수정했습니다.