gpt4 book ai didi

c# - 嵌套 UpdatePanel 中的下拉列表

转载 作者:太空宇宙 更新时间:2023-11-03 16:01:22 28 4
gpt4 key购买 nike

我对此很陌生,我正在将 asp.net 与 Visual Studio 结合使用。我有一个系统,人们将从数据库中下载一些数据。为此,我想要两个下拉列表。一个用于邮政编码,另一个用于 MonitorID。

邮政编码下拉列表是数据绑定(bind)的,以显示所有不同的邮政编码监视器 ID 下拉列表是数据绑定(bind)的,以显示第一个下拉列表中邮政编码中包含的所有监视器 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。

最佳答案

我会说完全删除内部 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,因为我认为这在这种情况下更有用。

关于c# - 嵌套 UpdatePanel 中的下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21174835/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com