2012-04-23 182 views
0

嗨我正在ASP.NET中的酒店預訂項目上工作。 我想製作一個過濾器,以便可以按日期搜索可用房間(例如6月1日至6月5日之間),然後預訂該房間。如何將該房間的狀態更改爲「不可用」那個時期,以便有人想在15月15日和30日之間預定那個房間可以做到這一點。房間的狀態是我數據庫中的布爾值。更改布爾值

enter image description here

+0

你到目前爲止嘗試過? – 2012-04-23 10:08:44

+0

到目前爲止,我顯示所有可用狀態的房間。但是當我在數據庫中引入房間時設置了狀態。但是我不知道如何更改緊急狀態,並且如果可以將房間狀態設置爲真實一段時間,然後假的另一個時期 – jonny 2012-04-23 10:11:16

+0

你可以處理這個爲UI的目的,而不使用數據庫中的狀態字段只有檢入日期和檢出日期... – 2012-04-23 10:14:25

回答

0

嘗試這樣的事情

的UI顯示數據之前,你必須操縱你的表空間,每次

var objrum = rum.toList().asQueryable(); // fetches all the rooms 
var objreservation = reservation.toList().asQueryable(); // fetches all reservation 

foreach(var res in objreservation) 
{ 
    foreach(var rum in objrum) 
    { 
     if(res.roomid == rum.rumid) 
     { 
      if(res.checkindate >= currentcheckindate && res.checkoutdate <= currentcheckoutdate) 
      { 
       rum.status = false // set to unavailable 
      } 
      else 
       rum.status = true // set to available 
     } 
    } 
} 

比取從表空間中的數據顯示在您的UI

+0

根據您在代碼中的用法做查詢更改可能是LINQ到對象,或LINQ以實體... – 2012-04-23 10:31:50

+0

你的例子可以捲成更小的LINQ/Lambda表達式。 – James 2012-04-23 10:33:26

+0

yuppp,你是對的... – 2012-04-23 10:34:56

0

'Status'價值變化和基於多事情,所以你不應該真正將其存儲對您的室的桌子上。

在這種情況下,您需要做的事情是編寫一個查詢查看日期範圍,然後根據您的預訂表返回狀態。因此,用戶選擇一個日期範圍,查詢得到執行,並返回所有可用或預訂狀態的日期列表。

試想一下,如果你這樣做

SELECT * FROM Reservation res LEFT JOIN Room ON res.Room_ID = Room.RoomId 

你的表空間有可用的狀態信息,因此它總是會爲每一個行返回可用。如果您將此狀態設置爲不可用,即使房間實際可用,也不會返回每一行。