2012-04-23 127 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 

你的表空间有可用的状态信息,因此它总是会为每一个行返回可用。如果您将此状态设置为不可用,即使房间实际可用,也不会返回每一行。