0

我有几个简单的下拉列表。第一个由 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>
4

3 回答 3

2

确保您启用了 ViewState,以便它可以在“选择”项目之前填充列表。此外,请确保您不会在 Page_Load 中重新填充并丢失所选值。例如。if (!IsPostback) { // 填充 }

于 2013-06-18T17:34:02.080 回答
0

自己管理级联下拉列表的一些替代方法是:

ASP.NET AJAX 控件工具包: ASP.NET AJAX 级联下拉

使用 ASP.NET 和 jQuery 级联下拉:使用 ASP.NET 和 jQuery 级联下拉

于 2013-06-18T20:05:41.890 回答
0

我能够通过使用适当的 !postback 条件绑定 page_init 方法后面代码中的下拉列表来解决此问题,而不是使用 linqdatasource 绑定它。但是,我仍然不确定是什么原因造成的。

于 2013-06-20T06:48:36.923 回答