0

アルファベット順に表示される sqldatasource からのドロップダウン リストがあります。このため、リストのインデックス番号は、SQL テーブル内の主キーとまったく一致しません。私が持っている主キー情報に基づいて、ページの読み込み時にドロップダウン リストの選択を設定できるようにする必要があります。

<asp:DropDownList ID="catagoryDropDown" runat="server" DataSourceID="SqlDataSource3"
     DataTextField="Catagory" DataValueField="PK_SupportCatagory" CssClass="dropDownList">
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$     
     ConnectionStrings:ApplicationServices %>"
     SelectCommand="SELECT [PK_SupportCatagory], [Catagory] FROM [SupportCatagory] ORDER BY CASE  
     WHEN [PK_SupportCatagory] = 1 THEN 1 ELSE 2 END, [Catagory]">
</asp:SqlDataSource>

私の考えは、それを使用してデータベースにクエリを実行し、ドロップダウンリストを適切に設定して文字列を取得することです。

catagoryDropDown.SelectedValue = "Sick Leave";

上記は機能しません。どうすればこれを達成できますか? これを行うより良い方法はありますか?

4

4 に答える 4

1

Garrison Neely の答えはうまくいきませんでしたが、正しい方向に進みました。これは最終的に機能しました:

            int i = 0;
            foreach (var item in catagoryDropDown.Items)
            {
                if (item.ToString().Equals("Sick Leave"))
                {
                    catagoryDropDown.SelectedIndex = i;
                    break;
                }
                i++;
            }
于 2013-07-16T12:49:49.070 に答える
1
var selectedIndex = -1;

for(int i = 0; i < catagoryDropDown.Items.Count; i++)
{
    if(catagoryDropDown.Items[i].Text.ToLower() == "sick leave")
    {
        selectedIndex = i;
        break;
    }
}

if(selectedIndex > -1)
{
    catagoryDropDown.SelectedIndex = selectedIndex;
}

.ToLower() を追加したのは、文字列に大文字と小文字の区別がない場合に簡単になるためです。

于 2013-07-15T21:11:28.820 に答える
0

これを試してみてください。うまくいくと確信しています:

ddl.SelectedIndex = ddl.Items.IndexOf(ddl.Items.FindByText(Convert.ToString(Any Value)));

前に、(ddl がバインドされている) データソースに値が存在することを確認してください。

于 2013-10-01T23:05:49.367 に答える