2009-08-24 1 views
0

저는 몇 주 전에 Visual Studio를 배우기 시작했습니다. 모든 것이 제 머리 위에 있습니다. 날짜 열과 가격 열을 모두 포맷하는 데 사용할 코드 사본을 제발 제공해 주시겠습니까? 나는 또한 체크 박스를 보여주기 위해 gridview를 얻는 것 같지 않다. 나는 pls 도움을 붙어있어. 나는 Visual Studio 2008을 사용 중이며 xml 파일에서 ROOM_COST, DATE_TO, ROOM_TYPE, LOCATION, SMOKING, RESTAURANT AND NO_OF_PEOPLE COLUMNS을 꺼내려고합니다. 이제 사용자는 자신의 요구 사항을 충족시키는 항목을 선택할 수 있습니다. 다음은 내 XML 파일과 XML 쿼리의 linq 파일입니다.사용자 입력 및 사용자가 입력 목록에서 선택하는 것과 관련하여 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> 

XDocument xmlDoc = XDocument.Load(Server.MapPath("xml/data1.xml")); 

     var hotels = from hotel in xmlDoc.Descendants("Table") 
        where Double.Parse(pplTextBox.Text) <= Double.Parse(hotel.Element("NO_OF_PEOPLE").Value) 
        //&& DateTime.Parse(DateTextFrom.Text)>DateTime.Parse(hotel.Element("DATE_TO").Value) 
        select new 
        { 
         RoomCost = hotel.Element("ROOM_COST").Value, 
         RoomType = hotel.Element("ROOM_TYPE").Value, 
         Hotel = hotel.Element("HOTEL_NAME").Value, 
         NoOfGuest = hotel.Element("NO_OF_PEOPLE").Value, 
         Smoking = hotel.Element("SMOKING").Value, 
         Restaurant = hotel.Element("RESTAURANT").Value, 
         Location = hotel.Element("HOTEL_AREA").Value, 
         AvailableDate = hotel.Element("DATE_TO").Value 

        }; 


     GridView1.DataSource = hotels.ToList(); 

     GridView1.DataBind(); 

미리 감사드립니다.

+0

중복 된 http://stackoverflow.com/questions/1316373/displaying-results-of-a-linq-to-xml-query-in-gridview – CoderDennis

+0

이 사용자는 질문이 무엇인지 더 잘 설명하는 것처럼 보입니다. 다시 게시하는 대신 질문을 편집하는 방법을 배웁니다. :) –

답변

0

이 당신에게 강력한 형식의 값이 서식 수의 객체를 줄 것이다 :

또한
select new { 
    RoomCost = (decimal)hotel.Element("ROOM_COST"), 
    RoomType = (string)hotel.Element("ROOM_TYPE"), 
    Hotel = (string)hotel.Element("HOTEL_NAME"), 
    NoOfGuest = (int)hotel.Element("NO_OF_PEOPLE"), 
    Smoking = (hotel.Element("SMOKING").Value == "Y"), 
    Restaurant = (hotel.Element("RESTAURANT").Value == "Y"), 
    Location = (string)hotel.Element("HOTEL_AREA"), 
    AvailableDate = (DateTime)hotel.Element("DATE_TO") 
}; 

내가 구문 분석이에 쿼리를 변경 한 후 첫 번째 사용자의 입력을 확인하는 제안 :

var query = from hotel in data.Descendants("Table") 
      where numberOfPeople <= (double)hotel.Element("NO_OF_PEOPLE") 
      && dateNeeded > (DateTime)hotel.Element("DATE_FROM") 
      && dateNeeded < (DateTime)hotel.Element("DATE_TO") 

하는 만들기를 "numberOfPeople"라는 변수를 입력하고 구문 분석 할 수없는 경우 사용자에게 경고하는 "dateNeeded"와 동일하게 입력을 구문 분석합니다 ... 일부 홀수 Linq에 XML 오류로 표시하고 싶지 않음 :)

관련 문제