15
List<String> nameList = new List<String>();
DropDownList ddl = new DropDownList();

ここにリストが入力され、ソートされます。

nameList.Sort();

ここで、問題が発生しているドロップダウンリストにドロップする必要があります (foreach を使用):

foreach (string name in nameList){
    ddl.Items.Add(new ListItem(nameList[name].ToString()));
}

仕事はありません - 何か提案はありますか?それは私にコンパイルエラーを与えています:

Error - The best overloaded method match for 'System.Collections.Generic.List<string>.this[int]' has some invalid arguments 

Error - Argument '1': cannot convert from 'string' to 'int'
4

6 に答える 6

42

DDLをリストに直接バインドしないのはなぜですか

DropDownList ddl = new DropDownList();
ddl.DataSource = nameList;
ddl.DataBind();
于 2008-10-29T18:26:01.260 に答える
21

これを置き換えます:

 ddl.Items.Add(new ListItem(nameList[name].ToString()));

これとともに:

 ddl.Items.Add(new ListItem(name));

夕食のように完成。

于 2008-10-29T18:27:22.663 に答える
2
ddl.DataSource = nameList; 
ddl.DataBind(); 

SharePoint リストの場合は機能しません - エラー: データ ソースの種類が無効です。IListSource、IEnumerable、または IDataSource のいずれかである必要があります。上記のように、SharePoint 開発者がこれを List<string> ではなく SPList 用であると考えた場合に備えて、参加することにしました。

SPList にバインドする方法はありますが、SPListItemCollection を使用するか、より良い方法で SPDataSource を使用します。SharePoint 開発者については、Chris O' Brien によるこのブログを参照してください。

于 2011-12-17T02:09:46.913 に答える
1

これは、List が文字列 (名前) ではなく、int によってインデックス付けされているためです。

foreach (string name in nameList)
{
    ddl.Items.Add(new ListItem(name));
}

それを修正します。

于 2008-10-29T18:28:08.963 に答える
0
    foreach (string name in nameList){
        ddl.Items.Add(new ListItem(nameList[name].ToString()));
    }

あなたの問題です。

それはもっと似ているはずです

foreach (string name in nameList){
    ddl.Items.Add(new ListItem(name.ToString()));
}

しかし、実際には、マーカスの提案の方が少し気に入っています。

于 2008-10-29T18:28:05.500 に答える
0

コレクションnameListは であるため、そのエラーが発生します。そのためList、文字列ではなくインデックスを使用してアクセスする必要があります (名前を使用します)。

したがって、次のように書くことができます。

foreach (string name in nameList){
    ddl.Items.Add(name);
}

ところで、これを行う最良の方法は次のとおりです。

ddl.DataSource = nameList;
ddl.DataBind();
于 2008-10-29T18:29:09.743 に答える