2009-08-22 16 views
0

XML文書をLINQでクエリしていて、ユーザがリストから選択できるように結果をgridviewに表示するとします。GridviewでのLINQ TO XMLクエリの結果の表示

クエリはユーザー入力の結果です。

ここにmy 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> 

答えて

1

これは可能です。

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

あなたのXMLはXMLに永続化されたデータセットからあるように見えます:ここではいくつかのサンプルがあります。この場合、あなたはまた、このリンクからの情報を使用してデータセットをリロードすることができます:

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

そこからデータビューを持つデータセットの結果を絞り込むことができます。

することもできますLINQのデータセット以上:

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

+0

本当にありがとうございましたklabranche、私は今、グリッドビューで結果を表示することができますが、カントはルート要素を変更するように見える、はいその直接生成oracle dbから。 また、検索した数字を小数点以下2桁に変換する方法についてのご意見はありますか? ありがとうございます – user161314

+0

ルート要素を変更できないということを意味しますか?あなたは何をしようとしているのですか? – klabranche

+0

フォーマットについては、グリッドにバインドしてグリッドに列を生成させるので、コードで書式設定を行う必要があります。ここでは、これを行う方法を示すSOのサンプルがあります。コードは日付にフォーマットされますが、希望どおりにフォーマットすることができます。書式指定文字列を調べるだけです。 http://stackoverflow.com/questions/1176865/unable-to-format-date-in-dataset-column-gridview – klabranche

関連する問題