2010-01-07 2 views
1

Веб-сайт, на котором я работаю, будет содержать раскрывающийся список, который показывает несколько кодов причин.Использовать массив для заполнения списка?

Возможно ли заполнить раскрывающийся список массивом, полученным из пользовательского класса?

Что-то вроде этого:

ASPX страница

<asp:DropDownList ID="ddlReasonsWhy" runat="server"></asp:DropDownList> 

ASPX Код За

protected void Page_Load(object sender, EventArgs e) 
{ 
    //instantiate custom class 
    Class1 reasonsList = new Class1(); 
    //populate reasons list 
    this.ddlReasonsWhy.Items.Add(reasonsList.getReasons); 

пользовательского класса

public string[] getReasons() 
    { 
     string[] Reasons; 
     Reasons[0] = "test"; 
     Reasons[1] = "test2"; 
     Reasons[2] = "test3"; 

     return Reasons; 
    } 

Update1:

Благодаря ответам и этот стек link мое окончательное решение аналогично Ahmet и шелковистой ответы.

Класс

public List<ListItem> getRejectReasons() 
    { 
     List<ListItem> reasons = new List<ListItem>(); 
     reasons.Add(new ListItem("Select Value", "0")); 
     reasons.Add(new ListItem("Red", "1")); 
     reasons.Add(new ListItem("Green", "2")); 
     return reasons; 

    } 

Код За

//instantiate custom class 
Class1 reject = new Class1(); 
this.ddlReasonsWhy.DataSource = reject.getRejectReasons(); 
this.ddlReasonsWhy.DataBind(); 

ответ

3

Использование ListItem вместо строки и AddRange для Добавить

редактирования: getReasons не является переменная поэтому используйте getReasons()

ASPXPAGE

<asp:DropDownList ID="ddlReasonsWhy" runat="server"></asp:DropDownList> 

ASPX Код За

protected void Page_Load(object sender, EventArgs e) 
{ 
    //instantiate custom class 
    Class1 reasonsList = new Class1(); 
    //populate reasons list 
    this.ddlReasonsWhy.Items.AddRange(reasonsList.getReasons()); 
} 

пользовательского класса

public ListItem[] getReasons() 
    { 
     ListItem[] Reasons; 
     Reasons[0] = "test"; 
     Reasons[1] = "test2"; 
     Reasons[2] = "test3"; 

     return Reasons; 
    } 
+0

спасибо - это было очень полезно - см. Мое обновление1 для правильного синтаксиса класса. –

1

(непроверенных)

this.ddlReasonsWhy.DataSource = reasonsList.getReasons; 
this.ddlReasonsWhy.DataBind(); 
+0

пытался что - получает нулевую ссылку за исключением –

0

только мысль, но как насчет:

this.ddlReasonsWhy.Items.Add(reasonsList.getReasons().Select(r => new ListItem(r))); 
3

- Edit:

Я заметил, что вы особенно хотели привязать к массиву. Я не верю , что возможно (возможно, неправильно); Я оставляю свой пример ниже, как это сделать для пользовательского класса, возможно, это полезно, возможно, нет. Надеюсь, кто-то другой ответит вам более прямо.

- Старый:

Конечно, это, например, так:

ddlList.DataSource  = yourDataSource; 
ddlList.DataTextField = "DisplayProperty"; 
ddlList.DataValueField = "PropertyForValue"; 
ddlList.DataBind(); 

Но обратите внимание, в вашем примере вы не выложили класс, вы опубликовали метод.В примере о 'yourDataSource' должно быть что-то вроде:

+0

спасибо - определенно получил меня в правильном направлении. –

Смежные вопросы