asp.net 4 dropdownlist findByText不适用于动态列表
本文关键字:适用于 动态 列表 不适用 findByText net dropdownlist asp | 更新日期: 2023-09-27 17:58:04
我有一个dropdownlist,其数据源来自SQL server。
<asp:DropDownList ID="State" runat="server" DataSourceID="SqlDataSource1" DataTextField="STATE_NAME" DataValueField="STATE_FIPS">
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT DISTINCT [STATE_NAME], [STATE_FIPS] FROM [county] order by [STATE_NAME]">
</asp:SqlDataSource>
我想预先填充列表中的值。我使用CCD_ 1。但它不起作用。它给了我一个来自CCD_ 2的null。
如果我使用静态列表项,同样的代码也能正常工作,比如:
<asp:DropDownList ID="ddl" runat="server">
<asp:ListItem>item1</asp:ListItem>
<asp:ListItem>item2</asp:ListItem>
<asp:ListItem>item3</asp:ListItem>
<asp:ListItem>item4</asp:ListItem>
</asp:DropDownList>
有什么想法吗?谢谢
直接使用下拉列表的SelectedValue
属性:DropDownList.SelectedValue = YourValueHere;
怎么样?
编辑:我遇到你的问题,你必须选择DropDownList Class
而不是id of your dropdownlist control
。下面的代码正在工作,我测试了它。
ddl.SelectedIndex = ddl.Items.IndexOf(ddl.Items.FindByValue("item3"));
我也遇到过同样的问题。然而,在我的案例中,下拉列表被数据绑定了两次。1个由我自己,1个通过父控件。第二次数据绑定后,所选索引被重置。
因此,请检查控件是否进行了两次数据绑定。
您还可以在de使您的dropdown_DataBound(object sender,EventArgs e)方法无效。如果中断此方法,您会注意到数据绑定已完成两次。
您可以使用以下代码,它适用于静态和动态值:
ddl.FindItemByText("YourText").Selected = true;