Listview不会根据下拉列表进行更新

时间:2015-05-04 20:57:11

标签: c# asp.net listview updatepanel dropdownbox

我有城市的asp下拉菜单,然后是所选城市内的建筑物下拉列表,然后是所选建筑物中的房间列表视图:

<asp:UpdatePanel ID="CityListUpdatePanel" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:DropDownList ID="CityListDropDown" class="form-control" Width="250" runat="server" DataSourceID="CityListDataSource" DataTextField="name" DataValueField="id" AutoPostBack="True" OnSelectedIndexChanged="CityListDropDown_SelectedIndexChanged">
        </asp:DropDownList>
        <asp:ObjectDataSource ID="CityListDataSource" runat="server" SelectMethod="GetListOfCities" TypeName="RoomTraq.CityDataServiceReference.CityDataServiceClient"></asp:ObjectDataSource>
    </ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="BuildingListUpdatePanel" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:DropDownList ID="BuildingListDropDown" class="form-control" Width="250" runat="server" DataSourceID="BuildingListDataSource" DataTextField="name" DataValueField="id" AutoPostBack="True" OnSelectedIndexChanged="BuildingListDropDown_SelectedIndexChanged">
        </asp:DropDownList>
        <asp:ObjectDataSource ID="BuildingListDataSource" runat="server" SelectMethod="BuildingsByCity" TypeName="RoomTraq.BuildingDataServiceReference.BuildingDataServiceClient">
            <SelectParameters>
                <asp:ControlParameter ControlID="CityListDropDown" Name="CityId" PropertyName="SelectedValue" Type="Int64" />
            </SelectParameters>
        </asp:ObjectDataSource>
    </ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="RoomListUpdatePanel" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:ListView ID="ListView1" runat="server" DataSourceID="RoomListDataSource" InsertItemPosition="LastItem">

        ....

        <asp:ObjectDataSource ID="RoomListDataSource" runat="server" DataObjectTypeName="RoomTraq.RoomDataServiceReference.Room" DeleteMethod="DeleteRoom" InsertMethod="AddNewRoom" SelectMethod="RoomsByBuilding" TypeName="RoomTraq.RoomDataServiceReference.RoomDataServiceClient" UpdateMethod="UpdateRoom">
            <SelectParameters>
                <asp:ControlParameter ControlID="BuildingListDropDown" Name="BuildingId" PropertyName="SelectedValue" Type="Int64" />
            </SelectParameters>
        </asp:ObjectDataSource>

如您所见,每个元素都从数据源获取数据,该数据源使用前一个元素的选定值作为查询的参数。

在后面的代码中,我有

    protected void CityListDropDown_SelectedIndexChanged(object sender, EventArgs e)
    {
        BuildingListUpdatePanel.Update();
        RoomListUpdatePanel.Update();
    }

    protected void BuildingListDropDown_SelectedIndexChanged(object sender, EventArgs e)
    {
        RoomListUpdatePanel.Update();
    }

当页面首次出现时,所有内容都会正确显示所选择的第一个城市,该城市的建筑物列表以及第一个建筑物的房间列表。

当我选择不同的建筑物时,房间列表会正确更新。

问题:当我选择不同的城市时,建筑物列表会正确更新,但房间列表不会更新。两者都应该更新 - 我将它们放在更新面板中,这样我就可以对这些面板进行部分页面更新,我告诉面板要更新,但面板不会自行更新。我提供房间数据的Web服务永远不会被调用,直到我选择不同的建筑物。但是当建筑物清单更新以反映新的城市选择时,这会使我的页面处于不良状态,但房间列表仍然显示前一个城市的建筑物的房间。 请帮助!!

0 个答案:

没有答案