Asp.net 将变量传递给动态下拉列表
我有两个下拉列表,一个是州,第二个是城市。我试图创建它,当用户单击状态时,第二个dropdownlist将填充数据表中的城市名称 这是密码Asp.net 将变量传递给动态下拉列表,asp.net,vb.net,data-binding,drop-down-menu,Asp.net,Vb.net,Data Binding,Drop Down Menu,我有两个下拉列表,一个是州,第二个是城市。我试图创建它,当用户单击状态时,第二个dropdownlist将填充数据表中的城市名称 这是密码 <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> <%--<cc2:CascadingDropDown ID="CascadingDropDown1" runat="server"> </cc2:Cas
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<%--<cc2:CascadingDropDown ID="CascadingDropDown1" runat="server"> </cc2:CascadingDropDown>--%>
<h1>Live Event Search Engine</h1><br />
State: <asp:DropDownList ID="ddlState" runat="server" AutoPostBack="True" DataSourceID="SqlDataSource1" DataTextField="ST_Code" DataValueField="ST_Code" /><asp:SqlDataSource
ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:dbConnection %>"
SelectCommand="SELECT [ST_Code] FROM [State]">
</asp:SqlDataSource>
City: <asp:DropDownList ID="ddlCity" runat="server" DataSourceID="SqlDataSource2" DataTextField="RS_City" DataValueField="RS_City" /><asp:SqlDataSource
ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:dbConnection %>"
SelectCommand="web_PublicProgramListbyState" SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:SessionParameter Name="State" SessionField="ST_Code" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
<asp:Button ID="Submit" runat="server" Text="Submit" />
</asp:Content>
我看不到ddlState\u SelectedIndexChanged事件在哪里写入会话变量。这是必需的。当您已经定义了SqlDataSource时,您似乎正在尝试将数据集引入其中。只需修改SqlDataSource的参数并重新绑定:
Public Sub ddlState_SelectedIndexChanged(...)
SqlDataSource2.SelectParameters.Clear()
SqlDataSource2.SelectParameters.Add(New Parameter("@State", DbType.String, ddlState.SelectedValue))
ddlCity.DataBind()
End Sub
编辑:或者您可以使用引用SqlDataSource2.SelectParameters中的ddlState.SelectedValue的控制参数,如另一个答案中所述。唯一的诀窍是你必须小心地管理你的默认值,这样ddlCity只能在你想要的时候绑定。我会把它改成一个控制参数,然后调用数据绑定。不用自己填了
<asp:ControlParameter Name="State" ControlID="ddlState" Type="String" />
或者,如果您想删除所有隐藏的代码,请将其放在带有触发器的更新面板中。那么您要问的问题是什么?有错误吗?这不起作用吗?@Brian,嗯,它不起作用。“State”中的变量不会传递到“City”,City Dropdownlist也不会加载。我刚刚得到一个错误。代码显示程序绑定而不是城市?不管怎样,贴在下面。
<asp:ControlParameter Name="State" ControlID="ddlState" Type="String" />
Me.ddlCity.DataBind()