2012-05-24 241 views
0

這看起來很瑣碎,我以前知道如何在同一時間做到這一點,但由於某種原因,我似乎無法讓我的頭圍繞這個時候:下拉列表中選擇值

我有兩個表: HotelHotelRooms Hotel表有HotelID和其他酒店的詳細信息和HotelID被發現在HotelRooms與不同的房型,每個房型有一個描述。 一家酒店可以有許多房型。

我有一個DropDownList,其中包含HotelIDRoomIDsHotelID來自會話變量。 HotelID是爲DropDownList; but the list displays RoomType值. When Roomtypes are selected I want to display a GridView`與酒店房間的細節,如描述,價格等....

我不能這樣做,因爲我的DropDownList的值是HotelID被映射到Session ID。如何從DropDownList的選定值中獲取酒店客房的詳細信息?

更新:

代碼的GridView:

 string intResortID = Request.QueryString("intResortID ") 
     string strRoomType = DropDownList2.SelectedValue; 
     string connStr = ConfigurationManager.ConnectionStrings["bdsConnectionString"].ConnectionString; 
     SqlConnection Con = new SqlConnection(connStr); 
     SqlDataAdapter sdr = new SqlDataAdapter("SELECT TOP (100) PERCENT tblAvail.dtm, tblResortsRooms.strRoomType, tblResortsRooms.strDescription, tblAvail.intQty, tblAvail.curPrice, tblAvail.intResortID, tblResortsRooms.intWSCode FROM tblAvailable INNER JOIN tblResortsRooms ON tblAvail.intResortID = tblResortsRooms.intResortID AND tblAvail.strRoomType = tblResortsRooms.strRoomType WHERE (tblResortsRooms.curRecRate > 0) AND (tblAvail.intResortID = @intResortID) AND (tblAvail.strRoomType = @strRoomType) AND (tblAvailable.dtm >= { fn CURDATE() }) ORDER BY tblResortsRooms.strRoomType",Con); 
     SqlParameter ResID = new SqlParameter("@intResortID", intResortID); 
     SqlParameter RoomType = new SqlParameter("@strRoomType", strRoomType); 
     sdr.SelectCommand.Parameters.Add(ResID); 
     sdr.SelectCommand.Parameters.Add(RoomType); 

 <asp:DropDownList ID="DropDownList2" runat="server" 
     DataSourceID="SqlDataSource2" DataTextField="strRoomType" 
     DataValueField="intResortID" 
     onselectedindexchanged="DropDownList2_SelectedIndexChanged" 
     AutoPostBack="True"> 
    </asp:DropDownList> 
    <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
     SelectCommand="SELECT [intResortID], [strRoomType] FROM [tblResortsRooms] WHERE ([intResortID] = @intResortID)"> 
     <SelectParameters> 
      <asp:ControlParameter ControlID="DropDownList1" Name="intResortID" 
       PropertyName="SelectedValue" Type="Int32" /> 
     </SelectParameters> 
    </asp:SqlDataSource> 
+0

可你至少告訴我們一些代碼? ^^ – Thousand

+0

以上更新的問題 – user1270384

+0

您在哪裏以及如何填寫您的下拉列表?你能證明嗎? – Thousand

回答

2

'DropDownList1.SelectedValue'應該爲您提供@intResortID的值。
'DropDownList2.SelectedValue'應該爲您提供@strRoomType的值。

DropDownList2_SelectedIndexChanged應該運行查詢filling東西(如DataTable)。
填充的DataTable應綁定到您的GridView。

嘗試類似的東西在你的DropDownList2_SelectedIndexChanged方法如下:

string intResortID = Request.QueryString("intResortID "); 
string strRoomType = DropDownList2.SelectedValue; 
string connStr = ConfigurationManager.ConnectionStrings["bdsConnectionString"].ConnectionString; 
SqlConnection Con = new SqlConnection(connStr); 
SqlDataAdapter sdr = new SqlDataAdapter("SELECT TOP (100) PERCENT tblAvail.dtm, tblResortsRooms.strRoomType, tblResortsRooms.strDescription, tblAvail.intQty, tblAvail.curPrice, tblAvail.intResortID, tblResortsRooms.intWSCode FROM tblAvailable INNER JOIN tblResortsRooms ON tblAvail.intResortID = tblResortsRooms.intResortID AND tblAvail.strRoomType = tblResortsRooms.strRoomType WHERE (tblResortsRooms.curRecRate > 0) AND (tblAvail.intResortID = @intResortID) AND (tblAvail.strRoomType = @strRoomType) AND (tblAvailable.dtm >= { fn CURDATE() }) ORDER BY tblResortsRooms.strRoomType", Con); 
SqlParameter ResID = new SqlParameter("@intResortID", intResortID); 
SqlParameter RoomType = new SqlParameter("@strRoomType", strRoomType); 
sdr.SelectCommand.Parameters.Add(ResID); 
sdr.SelectCommand.Parameters.Add(RoomType); 
DataTable results = new DataTable(); 

sdr.Fill(results); 

resultsGridView.DataSource = results; //Assuming resultsGridView is the name of the GridView on your ASPX page. 
resultsGridView.DataBind(); 
+0

應該我的dropdownlist2有回發? – user1270384

+0

@ user1270384是的,只要希望在用戶選擇某個選項時更新GridView。 – Trisped

+0

然後沒有它不工作... – user1270384

2

嘗試下拉列表的SelectedItem.Text

+1

我得到錯誤對象引用未設置爲對象的實例 – user1270384

+0

下拉列表中有哪些字段? HotelID作爲DataValueField和RoomID作爲DataTextField? – angusf

+0

是的,這是正確的@angusf – user1270384

0

聽起來就像您需要在HotelRooms表中標識每個房間的新ID(主鍵)。如果你有這個,你可以用它作爲下拉的值,問題就會消失。

+0

那麼@John我的酒店房間ID是主鍵以及酒店房間的ID表,但因爲它的酒店ID是數據字段值,而不是酒店房間ID我無法在我的GridView中顯示任何東西,因爲沒有房間類型通過 – user1270384

+0

而不是複合主鍵,您可以添加一個ID字段作爲新的主要鍵和使用這個值?這依賴於用戶首先選擇酒店,然後填寫該酒店房間的下拉菜單。 – johnd

+0

我不明白你的意思,我已經嘗試了一個酒店列表下拉列表和另一個房間列表下拉列表,但是當我選擇房型時gridview沒有任何反應 – user1270384