سؤال

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

يتم تعبئة قائمة هنا ، ثم فرز:

nameList.Sort();

الآن أنا بحاجة إلى انخفاض في dropdownlist حيث أواجه قضايا (باستخدام foreach):

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

لا workie - أي اقتراحات ؟ انه يعطيني أخطاء الترجمة:

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'
هل كانت مفيدة؟

المحلول

واستبدل هذا:

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

ومع هذا:

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

تم مثل العشاء.

نصائح أخرى

لماذا لا مجرد ربط DDL مباشرة إلى قائمة مثل

DropDownList ddl = new DropDownList();
ddl.DataSource = nameList;
ddl.DataBind();
ddl.DataSource = nameList; 
ddl.DataBind(); 

لا تعمل إذا كانت قائمة SharePoint - الخطأ:مصدر البيانات هو نوع غير صالح.يجب أن يكون إما IListSource ، IEnumerable ، أو IDataSource.قررت أن تتناغم في حالة أي SharePoint يعتقد المطورين هذا كان SPList بدلا من القائمة<string>كما هو مكتوب أعلاه.

هناك طريقة ربط SPList لكن عليك استخدام SPListItemCollection ، أو يذهب واحد أفضل استخدام SPDataSource.SharePoint المطورين ، انظر هذا بلوق من قبل كريس يا برين.

وسيكون ذلك لأنه لم يتم فهرستها من قبل قائمة سلسلة (الاسم) ولكن عن طريق [إينتس].

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

هل إصلاح ذلك.

    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()));
}

ولكن أنا فعلا مثل اقتراح ماركوس أفضل قليلا.

ويمكنك الحصول على هذا الخطأ لأن nameList جمع هو List لذلك يجب الوصول إليه باستخدام مؤشر يست سلسلة (استخدام الاسم).

وهكذا يمكنك كتابة:

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

وبالمناسبة فإن أفضل طريقة للقيام بذلك هي:

ddl.DataSource = nameList;
ddl.DataBind();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top