我有几个简单的下拉列表。第一个是由html中的linqdatsource绑定,autopostback设置为true。第一个的选择决定了第二个数据。当我在第一个中选择一个项目时,selectedindexChanged事件会触发;但是,所选值始终是列表中的第一项,然后列表将重新绑定并恢复为其默认状态。我是否必须在代码隐藏中绑定它以防止这种情况?
<asp:DropDownList ID="dd_shirtcolor" runat="server" AppendDataBoundItems="true" AutoPostBack="True">
<asp:ListItem Text="Select Color" />
</asp:DropDownList>
<asp:LinqDataSource ID="LinqDataSource1" runat="server"
ContextTypeName="IPC.IPCDataDataContext" EntityTypeName=""
TableName="Shirts" Where="IsActive == @IsActive">
<WhereParameters>
<asp:Parameter DefaultValue="true" Name="IsActive" Type="Boolean" />
</WhereParameters>
</asp:LinqDataSource>
答案 0 :(得分:2)
确保启用了ViewState,以便在“选择”项目之前填充列表。 此外,请确保您不在Page_Load中重新填充并丢失所选值。 例如。 if(!IsPostback){//填充}
答案 1 :(得分:0)
自行管理级联下拉列表的一些替代方法是:
ASP.NET AJAX控件工具包: ASP.NET AJAX Cascading Drop Down
使用ASP.NET和jQuery级联下拉: Cascading Drop Down Using ASP.NET And jQuery
答案 2 :(得分:0)
我能够通过将page_init方法中的代码中的下拉列表与正确的!postback条件绑定而不是使用linqdatasource来绑定它来解决此问题。我仍然不确定是什么导致它。