如何在使用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>

如何在使用sqldatasource作为绑定时设置下拉列表的初始值

您应该使用dpsubj.Items.Clear() ..然后再次加载selectedindexchanged上的过滤数据,它将首先删除dpsubj下拉框中的所有先前记录,然后使用代码加载dpsubj

中的值

我认为您必须在第一个下拉菜单上创建一个SelectedIndexChanged事件,并让该事件导致第二个下拉菜单上的数据绑定。另外,默认情况下,如果您不希望第二个下拉菜单显示数据,请删除默认参数值。

如果你用ajax做任何事情,你也要确保第一个下拉列表更新第二个在你的脚本管理器

set AppendDataBoundItems="false" on dpsubj

由于将此属性设置为true,因此在绑定数据之前不会清除项。