簡體   English   中英

asp.net 4 下拉列表 findByText 不適用於動態列表

[英]asp.net 4 dropdownlist findByText not working for dynamic list

我有一個下拉列表,其數據源來自 SQL 服務器。

<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>

我想預先填充列表中的值。 我使用DropDownList.SelectedIndex = DropDownList.Items.IndexOf(DropDownList.Items.FindByValue(YourValueHere)) 但它不起作用。 它給了我一個來自DropDownList.Items.FindByValue(YourValueHere)的 null 。

如果我使用 static 列表項,相同的代碼可以正常工作,例如:

<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; ?

編輯:我有你的問題,你必須 Select DropDownList Class而不是id of your dropdownlist control 下面的代碼是有效的,我測試了它。

ddl.SelectedIndex = ddl.Items.IndexOf(ddl.Items.FindByValue("item3"));

您可以使用以下代碼,它適用於 static 和動態值:

ddl.FindItemByText("YourText").Selected = true;

我有同樣的問題。 但是在我的情況下,下拉列表是數據綁定的兩次。 1個我自己,1個通過家長控制。 在第二個數據綁定之后,選定的索引被重置。

所以檢查控件是否被數據綁定兩次。

您還可以在 de void yourdropdown_DataBound(object sender, EventArgs e) 方法中實現對項目的選擇。 如果你斷點這個方法,你會注意到數據綁定完成了兩次。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM