我想“注入”的[所有地区]项目到我的区域下拉菜单,如下所示:问题与ASP.NET的DropDownList非数据绑定值
<asp:DropDownList ID="regionList" runat="server" AutoPostBack="true" AppendDataBoundItems="true" Width="200px" DataSourceID="regionDataSource" DataTextField="Desc"
DataValueField="RegionId">
<asp:ListItem Selected="True" Value="">[All Regions]</asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource ID="regionDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:ProVantageMediaManagement %>" SelectCommand="SELECT [RegionId], [Desc] FROM [ListRegions] ORDER BY [Desc]">
</asp:SqlDataSource>
我也有一个排名下拉菜单中,对于出租车的区域中的行列,具有下列选择参数:
<asp:ControlParameter ControlID="regionList" Name="RegionId" PropertyName="SelectedValue" Type="Int32" DefaultValue="" ConvertEmptyStringToNull="true" />
而对于行列数据源:
<asp:SqlDataSource ID="rankDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:ProVantageMediaManagement %>" SelectCommand="SELECT [RankId], [Name] FROM [ListRanks] WHERE [RegionId] = ISNULL(@RegionId, [RegionId]) ORDER BY [Name]">
<SelectParameters>
<asp:ControlParameter ControlID="regionList" Name="RegionId" PropertyName="SelectedValue" Type="Int32" DefaultValue="" ConvertEmptyStringToNull="true" />
</SelectParameters>
</asp:SqlDataSource>
因此,预期的行为是,当选择[所有区域]时,等级下拉列表应该会得到一个空参数,并且mt SQL将为所有区域选择所有等级。我知道我的SQL使用null参数,但当我在区域列表中选择[All Regions]时,等级下拉列表不是数据绑定。当我从DB中选择一个区域时,它会绑定,但当我再次选择[所有区域]时,它会保持该绑定。我究竟做错了什么?
你可以发布你的绑定代码以及代码,你在哪里得到'regionList'的值? – Oded 2010-05-09 08:20:36
@Oded,我在那个阶段唯一的其他代码(我留下数据绑定并在后面填充代码)是列表的数据源,我已经包含了这些数据源。 – ProfK 2010-05-09 08:53:33
@ProfK - 你解决了这个问题吗?你应该发布一个答案,如果你有。 – Niklas 2012-02-28 15:08:21