0

これは非常に些細なことのように思えるかもしれません。以前はこれを行う方法を知っていましたが、何らかの理由で今回は理解できません。

私は 2 つ のテーブルを持っています:テーブルにはHotelとその他のホテルの詳細があり、 にはさまざまな部屋タイプがあり、各部屋タイプには説明があります。1 つのホテルに複数の部屋タイプを含めることができます。HotelRoomsHotelHotelIDHotelIDHotelRooms

DropDownListを含む がHotelIDありRoomIDsます。HotelIDセッション変数から来ます。説明、価格などのホテルの部屋の詳細を含む RoomType Roomtypes GridView`HotelIDの値です。DropDownList; but the list displays. Whenare selected I want to display a

HotelIDDropDownList の値が にマップされているため、これを行うことはできませんSession ID。DropDownList で選択した値から HotelRoom の詳細を取得するにはどうすればよいですか?

アップデート:

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>
4

3 に答える 3

2

ドロップダウンリストを試してみてくださいSelectedItem.Text

于 2012-05-25T00:00:55.587 に答える
2

「DropDownList1.SelectedValue」は の値を提供するはずです@intResortID
「DropDownList2.SelectedValue」は の値を提供するはずです@strRoomType

DropDownList2_SelectedIndexChanged何か(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();
于 2012-05-25T00:58:07.100 に答える
0

各部屋を一意に識別する HotelRooms テーブルに新しい ID (主キー) が必要なようです。それがあれば、それをドロップダウンの値として使用でき、問題は解決します。

于 2012-05-25T00:06:22.520 に答える