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>

有什么想法吗?谢谢

asp.net 4 dropdownlist findByText不适用于动态列表

直接使用下拉列表的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;