如何在使用sqldatasource作为绑定时设置下拉列表的初始值
本文关键字:下拉列表 设置 定时 绑定 sqldatasource | 更新日期: 2023-09-27 18:03:40
我有2个dropdownlist
,它们绑定到一个SQLDataSource
, 2nd dropdownlist
的值基于第一个dropdownlist
。问题是默认情况下dropdownlist
显示的是实际值。我把initialvalue放在dpsem中,所以它工作正常。但是当我在dpsubj dropdownlist
中做同样的事情时,它也显示了以前的值。
如果我选择dpsem——4,那么dpsubj应该是A,B,C,如果我选择dpsem——6,那么dpsubj应该是D,E,F。但是它显示的是A,B,C,D,E,F…
我知道这是与Autopostback有关的问题…
<asp:DropDownList ID="dpsem" runat="server" Height="28px"
Width="99px" AutoPostBack="True" DataSourceID="selectsemester"
DataTextField="sem_no" DataValueField="sem_no" AppendDataBoundItems="true">
<asp:ListItem Selected="True" Value="0">-select</asp:ListItem>
</asp:DropDownList>
<asp:DropDownList ID="dpsubj" runat="server" Height="28px"
Width="99px" AutoPostBack="True" DataSourceID="Selectscode"
DataTextField="scode" DataValueField="scode" AppendDataBoundItems="true">
<asp:ListItem Selected="True" Value="0">-select</asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource ID="Selectscode" runat="server"
ConnectionString="<%$ ConnectionStrings:AttendenceManagementConnectionString %>"
SelectCommand="SELECT DISTINCT [scode] FROM [Semester_Wise_Subject] WHERE (([branch_name] = @branch_name) AND ([sem_no] = @sem_no))">
<SelectParameters>
<asp:ControlParameter ControlID="lbdept" DefaultValue="IT" Name="branch_name"
PropertyName="Text" Type="String" />
<asp:ControlParameter ControlID="dpsem" DefaultValue="6" Name="sem_no"
PropertyName="SelectedValue" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
<asp:SqlDataSource ID="selectsemester" runat="server"
ConnectionString="<%$ ConnectionStrings:AttendenceManagementConnectionString %>"
SelectCommand="SELECT DISTINCT [sem_no] FROM [Batch_year]">
</asp:SqlDataSource>
您应该使用dpsubj.Items.Clear()
..然后再次加载selectedindexchanged
上的过滤数据,它将首先删除dpsubj下拉框中的所有先前记录,然后使用代码加载dpsubj
我认为您必须在第一个下拉菜单上创建一个SelectedIndexChanged事件,并让该事件导致第二个下拉菜单上的数据绑定。另外,默认情况下,如果您不希望第二个下拉菜单显示数据,请删除默认参数值。
如果你用ajax做任何事情,你也要确保第一个下拉列表更新第二个在你的脚本管理器
set AppendDataBoundItems="false"
on dpsubj
由于将此属性设置为true,因此在绑定数据之前不会清除项。