2009-08-22 6 views
0

J'interroge un document XML dans LINQ et souhaite afficher les résultats dans gridview pour permettre aux utilisateurs de sélectionner dans la liste.Affichage des résultats d'une requête LINQ TO XML dans Gridview

la requête est le résultat de l'entrée de l'utilisateur.

Voici une copie de mon fichier XML.

<?xml version="1.0" standalone="yes"?> 
<NewDataSet> 
    <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop"> 
    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"> 
     <xs:complexType> 
     <xs:choice minOccurs="0" maxOccurs="unbounded"> 
      <xs:element name="Table"> 
      <xs:complexType> 
       <xs:sequence> 
       <xs:element name="ROOM_ID" msprop:OraDbType="111" type="xs:short" minOccurs="0" /> 
       <xs:element name="SMOKING" msprop:OraDbType="126" type="xs:string" minOccurs="0" /> 
       <xs:element name="NO_OF_PEOPLE" msprop:OraDbType="111" type="xs:short" minOccurs="0" /> 
       <xs:element name="ROOM_COST" msprop:OraDbType="108" type="xs:double" minOccurs="0" /> 
       <xs:element name="ROOM_TYPE" msprop:OraDbType="126" type="xs:string" minOccurs="0" /> 
       <xs:element name="ROOM_DESC" msprop:OraDbType="126" type="xs:string" minOccurs="0" /> 
       <xs:element name="BOOKING_ID" msprop:OraDbType="111" type="xs:short" minOccurs="0" /> 
       <xs:element name="DATE_FROM" msprop:OraDbType="106" type="xs:dateTime" minOccurs="0" /> 
       <xs:element name="DATE_TO" msprop:OraDbType="106" type="xs:dateTime" minOccurs="0" /> 
       <xs:element name="HOTEL_AREA" msprop:OraDbType="126" type="xs:string" minOccurs="0" /> 
       <xs:element name="HOTEL_NAME" msprop:OraDbType="126" type="xs:string" minOccurs="0" /> 
       <xs:element name="RESTAURANT" msprop:OraDbType="126" type="xs:string" minOccurs="0" /> 
       </xs:sequence> 
      </xs:complexType> 
      </xs:element> 
     </xs:choice> 
     </xs:complexType> 
    </xs:element> 
    </xs:schema> 
    <Table> 
    <ROOM_ID>101</ROOM_ID> 
    <SMOKING>N</SMOKING> 
    <NO_OF_PEOPLE>1</NO_OF_PEOPLE> 
    <ROOM_COST>29.990000000000002</ROOM_COST> 
    <ROOM_TYPE>SINGLE ROOM</ROOM_TYPE> 
    <ROOM_DESC>ONE BED, MIRROR, DESK, COUCH</ROOM_DESC> 
    <BOOKING_ID>300</BOOKING_ID> 
    <DATE_FROM>2008-01-02T00:00:00+00:00</DATE_FROM> 
    <DATE_TO>2008-01-04T00:00:00+00:00</DATE_TO> 
    <HOTEL_AREA>WOLVERHAMPTON</HOTEL_AREA> 
    <HOTEL_NAME>LEVELS</HOTEL_NAME> 
    <RESTAURANT>N</RESTAURANT> 
    </Table> 
    <Table> 
    <ROOM_ID>105</ROOM_ID> 
    <SMOKING>Y</SMOKING> 
    <NO_OF_PEOPLE>4</NO_OF_PEOPLE> 
    <ROOM_COST>59.99</ROOM_COST> 
    <ROOM_TYPE>EN-SUITE</ROOM_TYPE> 
    <ROOM_DESC>KINGSIZE BED, MIRROR, GARDEN</ROOM_DESC> 
    <BOOKING_ID>301</BOOKING_ID> 
    <DATE_FROM>2009-01-02T00:00:00+00:00</DATE_FROM> 
    <DATE_TO>2009-01-15T00:00:00+00:00</DATE_TO> 
    <HOTEL_AREA>STAFFORD</HOTEL_AREA> 
    <HOTEL_NAME>HILTON</HOTEL_NAME> 
    <RESTAURANT>Y</RESTAURANT> 
    </Table> 
    <Table> 
    <ROOM_ID>111</ROOM_ID> 
    <SMOKING>N</SMOKING> 
    <NO_OF_PEOPLE>10</NO_OF_PEOPLE> 
    <ROOM_COST>49.99</ROOM_COST> 
    <ROOM_TYPE>HOSTEL ROOM</ROOM_TYPE> 
    <ROOM_DESC>DOUBLE-DECKER BED, DRAWER</ROOM_DESC> 
    <BOOKING_ID>302</BOOKING_ID> 
    <DATE_FROM>2009-03-02T00:00:00+00:00</DATE_FROM> 
    <DATE_TO>2009-06-15T00:00:00+01:00</DATE_TO> 
    <HOTEL_AREA>WOLVERHAMPTON</HOTEL_AREA> 
    <HOTEL_NAME>LEVELS</HOTEL_NAME> 
    <RESTAURANT>N</RESTAURANT> 
    </Table> 
    <Table> 
    <ROOM_ID>113</ROOM_ID> 
    <SMOKING>N</SMOKING> 
    <NO_OF_PEOPLE>1</NO_OF_PEOPLE> 
    <ROOM_COST>29.990000000000002</ROOM_COST> 
    <ROOM_TYPE>SINGLE ROOM</ROOM_TYPE> 
    <ROOM_DESC>ONE BED, MIRROR, DESK, COUCH</ROOM_DESC> 
    <BOOKING_ID>303</BOOKING_ID> 
    <DATE_FROM>2009-09-02T00:00:00+01:00</DATE_FROM> 
    <DATE_TO>2009-09-05T00:00:00+01:00</DATE_TO> 
    <HOTEL_AREA>BASWICH</HOTEL_AREA> 
    <HOTEL_NAME>DAYSTAR</HOTEL_NAME> 
    <RESTAURANT>Y</RESTAURANT> 
    </Table> 
    <Table> 
    <ROOM_ID>103</ROOM_ID> 
    <SMOKING>Y</SMOKING> 
    <NO_OF_PEOPLE>2</NO_OF_PEOPLE> 
    <ROOM_COST>39.99</ROOM_COST> 
    <ROOM_TYPE>DOUBLE ROOM</ROOM_TYPE> 
    <ROOM_DESC>DOUBLE BED, MIRROR, SEETEE</ROOM_DESC> 
    <BOOKING_ID>304</BOOKING_ID> 
    <DATE_FROM>2009-08-21T00:00:00+01:00</DATE_FROM> 
    <DATE_TO>2009-08-25T00:00:00+01:00</DATE_TO> 
    <HOTEL_AREA>CANNOCK</HOTEL_AREA> 
    <HOTEL_NAME>MIDAS</HOTEL_NAME> 
    <RESTAURANT>N</RESTAURANT> 
    </Table> 
    <Table> 
    <ROOM_ID>107</ROOM_ID> 
    <SMOKING>Y</SMOKING> 
    <NO_OF_PEOPLE>10</NO_OF_PEOPLE> 
    <ROOM_COST>49.99</ROOM_COST> 
    <ROOM_TYPE>HOSTEL ROOM</ROOM_TYPE> 
    <ROOM_DESC>DOUBLE-DECKER BED, DRAWER</ROOM_DESC> 
    <BOOKING_ID>305</BOOKING_ID> 
    <DATE_FROM>2009-08-25T00:00:00+01:00</DATE_FROM> 
    <DATE_TO>2009-08-31T00:00:00+01:00</DATE_TO> 
    <HOTEL_AREA>STOKE</HOTEL_AREA> 
    <HOTEL_NAME>MIVI</HOTEL_NAME> 
    <RESTAURANT>Y</RESTAURANT> 
    </Table> 
    <Table> 
    <ROOM_ID>141</ROOM_ID> 
    <SMOKING>N</SMOKING> 
    <NO_OF_PEOPLE>2</NO_OF_PEOPLE> 
    <ROOM_COST>39.99</ROOM_COST> 
    <ROOM_TYPE>DOUBLE ROOM</ROOM_TYPE> 
    <ROOM_DESC>DOUBLE BED, MIRROR, SEETEE</ROOM_DESC> 
    <HOTEL_AREA>BASWICH</HOTEL_AREA> 
    <HOTEL_NAME>DAYSTAR</HOTEL_NAME> 
    <RESTAURANT>Y</RESTAURANT> 
    </Table> 
    <Table> 
    <ROOM_ID>109</ROOM_ID> 
    <SMOKING>Y</SMOKING> 
    <NO_OF_PEOPLE>1</NO_OF_PEOPLE> 
    <ROOM_COST>19.990000000000002</ROOM_COST> 
    <ROOM_TYPE>BED-SIT</ROOM_TYPE> 
    <ROOM_DESC>ONE BED, DESK</ROOM_DESC> 
    <HOTEL_AREA>CANNOCK</HOTEL_AREA> 
    <HOTEL_NAME>MIDAS</HOTEL_NAME> 
    <RESTAURANT>N</RESTAURANT> 
    </Table> 
</NewDataSet> 

Répondre

1

Vous devriez être en mesure de le faire. Voici quelques exemples:

http://social.msdn.microsoft.com/Forums/en-US/xmlandnetfx/thread/149dd49d-27c3-4a92-9715-95c2cd624222

http://vstoolsforum.com/blogs/vbnet/archive/2008/08/26/linq-to-xml-with-asp-gridview-in-vb.aspx

Il semble que votre xml est d'un ensemble de données qui a été persisté à XML. Si tel est le cas, vous pouvez également recharger l'ensemble de données en utilisant les informations de ce lien:

http://msdn.microsoft.com/en-us/library/fx29c3yd.aspx

De là, vous pouvez filtrer les résultats de l'ensemble de données avec un dataview.

Vous pouvez également LINQ sur l'ensemble de données:

http://www.hookedonlinq.com/LINQtoDatasets.ashx

+0

Merci beaucoup klabranche, je peux voir les résultats en vue de la grille maintenant, mais ne peux pas sembler changer l'élément racine et oui son produit directement d'un oracle db. Et toutes les suggestions sur la façon de convertir les chiffres récupérés à 2 décimales? Merci d'avance – user161314

+0

Que voulez-vous dire que vous ne pouvez pas changer l'élément racine? Qu'essayez-vous de faire? – klabranche

+0

En ce qui concerne le formatage. Puisque vous liez la grille et que vous laissez la grille générer les colonnes, vous devrez faire le formatage en code. Voici un exemple sur SO qui montre comment faire cela. Le format de code à une date, mais vous pouvez le formater comme vous le souhaitez. Il suffit de regarder dans les chaînes de formatage. http://stackoverflow.com/questions/1176865/unable-to-format-date-in-dataset-column-gridview – klabranche