2010-06-30 12 views
0

Je récupère du Xml à partir d'un service. Je voudrais que ce soit la source de données d'une vue de la grille sur ma page aspx. Voici un échantillon du XmlLa source de données Linq To Xml pour la vue grille ne fonctionne pas. La grille ne montre aucune ligne

<?xml version="1.0" encoding="utf-16" ?> 
<ArrayOfTripTollCompleteDC xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <TripTollCompleteDC> 
    <TripTollId>5</TripTollId> 
    <DMSLaneModeID xsi:nil="true" /> 
    <HOVOnly>false</HOVOnly> 
    <CreateDateTime>2010-06-07T15:54:01.023</CreateDateTime> 
    <ConfigVTMSDelaySeconds>5</ConfigVTMSDelaySeconds> 
    </TripTollCompleteDC> 

et mon code ici que le xml et parse tente de lier la grille. Qu'est-ce que j'oublie ici?

var retVal = service.GetTripDetailsByTripID(tripId); 

      var xmlTrips = XDocument.Parse(retVal); 
      var tripTolls = 
       from t in xmlTrips.Elements("TripTollCompleteDC") 
       select new { 
        TripTollId = (int)t.Element("TripTollId") 
        , DMSLaneModeID = (int?)t.Element("DMSLaneModeID") 
        , HOVOnly = (bool)t.Element("HOVOnly") 
        , CreateDateTime = (DateTime)t.Element("CreateDateTime") 
        , ConfigVTMSDelaySeconds = (int)t.Element("ConfigVTMSDelaySeconds") 
       }; 

      grdTripDetails.DataSource = tripTolls; 
      grdTripDetails.DataBind(); 

Je réalise que ce sont des types anonymes. Est-ce un problème? J'ai vérifié que le service renvoie le Xml comme indiqué ci-dessus. Quelqu'un peut-il me pointer dans la bonne direction? Merci beaucoup pour tous les conseils.

Juste pour être complet, voici la grille balisage

<asp:GridView runat="server" ID="grdTripDetails" /> 

Cheers,
~ ck à San Diego

Répondre

1

Essayez ceci:

from t in xmlTrips.Root.Elements("TripTollCompleteDC") 

Notez l'ajout de Root là-dedans . Il n'y a qu'un seul élément de niveau supérieur, et ce n'est pas un TripTollCompleteDC.

Vous pouvez également besoin d'autogénérer les colonnes - je ne sais pas sur les vues de la grille. Cela soulève un point utile sur le débogage de ce genre de chose. Il y a deux problèmes potentiels ici:

  • Parsing et la transformation du XML
  • Génération de la vue grille

Vous pouvez tester le premier point via la journalisation - log les valeurs transformées de quelque manière que vous le faites normalement enregistrement. Heck, vous pourriez même simplement utiliser une application de console séparée pour tester. (C'est ce que je viens de faire.)

Vous pouvez tester le deuxième point en codant en dur certaines données et en rechargeant la page - est-ce que ça se voit comme vous l'attendez? Si ce n'est pas le cas, modifiez le code jusqu'à ce qu'il fasse ce que vous voulez.

En séparant ces deux problèmes, il est beaucoup plus facile de résoudre le problème beaucoup.