嵌套UpdatePanel中的下拉列表

时间:2014-01-16 23:11:35

标签: c# asp.net drop-down-menu triggers updatepanel

我对此很新,并且在Visual Studio中使用asp.net。我有一个人们要从数据库下载一些数据的系统。为此,我想有两个下拉列表。一个用于邮政编码,另一个用于MonitorID。

邮政编码下拉列表是数据绑定,以显示所有不同的邮政编码 监视器ID下拉列表是数据绑定,以显示第一个下拉列表中的邮政编码中包含的所有监视器ID。

我想根据邮政编码列表中选择的内容更改MonitorID列表。我已经读过UpdatePanels是一个很好的方法。我已经浏览了论坛帖子,感觉我已经接近完成这项工作,但有些事情并没有正确连接,我不确定是什么。以下是我的代码:

<form id="rawDataForm" runat="server">
                <asp:ScriptManager ID="RawDataScriptManager" runat="server" EnablePageMethods="True">
                </asp:ScriptManager>

                <asp:UpdatePanel ID="Outter_Zip" runat="server" ChildrenAsTriggers="False" UpdateMode="Conditional">
                    <ContentTemplate>
                        <asp:DropDownList ID="DropDownListZip" runat="server" DataSourceID="DistinctZip" DataTextField="Zip" DataValueField="Zip" AutoPostBack="True">
                        </asp:DropDownList>
                        <asp:SqlDataSource ID="DistinctZip" runat="server" ConnectionString="<%$ ConnectionStrings:VOCMSConnectionString %>" SelectCommand="SELECT DISTINCT [Zip] FROM [Monitor]"></asp:SqlDataSource>
                        <asp:UpdatePanel ID="Inner_Monitor" runat="server" ChildrenAsTriggers="False" UpdateMode="Conditional">
                            <ContentTemplate>
                                <asp:DropDownList ID="DropDownListMonitor" runat="server" AutoPostBack="True" DataSourceID="MonitorFromZip" DataTextField="MonitorID" DataValueField="MonitorID">
                                </asp:DropDownList>
                                <asp:SqlDataSource ID="MonitorFromZip" runat="server" ConnectionString="<%$ ConnectionStrings:VOCMSConnectionString %>" SelectCommand="SELECT [MonitorID] FROM [Monitor] WHERE ([Zip] = @Zip)">
                                    <SelectParameters>
                                        <asp:FormParameter DefaultValue="97601" FormField="DropDownListZip" Name="Zip" Type="String" />
                                    </SelectParameters>
                                </asp:SqlDataSource>
                            </ContentTemplate>
                            <Triggers>

                                <asp:AsyncPostBackTrigger ControlID="DropDownListZip" EventName="SelectedIndexChanged" />
                            </Triggers>
                        </asp:UpdatePanel>
                    </ContentTemplate>
                </asp:UpdatePanel>

我需要正确设置哪些其他设置?与回发有什么关系?当DropDownListZip selectedindex发生变化时,我将Inner_Monitor更新面板上的触发器设置为asyncpostback。

1 个答案:

答案 0 :(得分:0)

我想说完全删除内部UpdatePanel:

<form id="rawDataForm" runat="server">
    <asp:ScriptManager ID="RawDataScriptManager" runat="server" EnablePageMethods="True">
    </asp:ScriptManager>

    <asp:UpdatePanel ID="Outter_Zip" runat="server" ChildrenAsTriggers="False" UpdateMode="Conditional">
        <ContentTemplate>
            <asp:DropDownList ID="DropDownListZip" runat="server" DataSourceID="DistinctZip" 
                DataTextField="Zip" DataValueField="Zip" AutoPostBack="True">
            </asp:DropDownList>
            <asp:SqlDataSource ID="DistinctZip" runat="server" 
                ConnectionString="<%$ ConnectionStrings:VOCMSConnectionString %>" 
                SelectCommand="SELECT DISTINCT [Zip] FROM [Monitor]">
            </asp:SqlDataSource>

            <asp:DropDownList ID="DropDownListMonitor" runat="server" AutoPostBack="True" 
                DataSourceID="MonitorFromZip" DataTextField="MonitorID" DataValueField="MonitorID">
            </asp:DropDownList>
            <asp:SqlDataSource ID="MonitorFromZip" runat="server" 
                ConnectionString="<%$ ConnectionStrings:VOCMSConnectionString %>" 
                SelectCommand="SELECT [MonitorID] FROM [Monitor] WHERE ([Zip] = @Zip)">
                <SelectParameters>
                    <asp:ControlParameter DefaultValue="97601" ControlID="DropDownListZip" 
                        Name="Zip" PropertyName="SelectedValue" />
                </SelectParameters>
            </asp:SqlDataSource>
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="DropDownListZip" EventName="SelectedIndexChanged" />
        </Triggers>
    </asp:UpdatePanel>

没有必要在那里 - 主要是因为你永远不需要独立于UpdatePanel刷新内部UpdatePanel。

我还将FormParameter更改为ControlParameter,因为我觉得在这种情况下更有用。