2013-08-13 1 views
0

J'utilise EXT.NET et j'ai une question. J'ai un problème pour charger des données de json dans le panneau de grille. Mon code est ci-dessous. Lorsque l'élément de l'arbre est cliqué, la fonction selectNode se déclenche correctement, mais le résultat JSON ne peut pas être chargé dans le panneau Grid. Comment puis-je charger dans le panneau Grille? Actuellement, la page blanche blanche apparaît.ext.net Comment charger JSON dans le panneau Grid

@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> 

Voici les données de résultat JSON

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

Répondre

0

J'ai trouvé cette méthode loadData ne lit que les données d'enregistrement du modèle. Donc, je l'ai corrigé en utilisant la méthode loadRawData à la place de loadData.

Questions connexes