2015-02-04 4 views
0

У меня проблема с получением значений из DropDownList. Я понимаю, как добавить значение и получить это значение с помощью чисел, но моя проблема должна быть такой, как FrBrb, а затем принять это значение в коде и установить в значение 40 значение в моем коде. Вот что у меня есть до сих пор:Получение значений DropDownList

<asp:DropDownList ID="ddlRiverTour" runat="server"> 
        <asp:ListItem Value="FrBrd">French Broad</asp:ListItem> 
        <asp:ListItem Value="Nant">Tuck</asp:ListItem> 
        <asp:ListItem Value="Tuck">Nantahala</asp:ListItem> 
       </asp:DropDownList> 

Это мой список DropDownList с буквами в нем. Я должен использовать значение как это, но не могу использовать числовые значения, которые были бы очень простыми. Фактический код, чтобы получить эти значения, а затем использовать их в моих расчетах, является загадочной частью. Я не знаю, должен ли я определить их, а затем использовать оператор if, чтобы решить, что это такое, а затем делать мои вычисления, но как я их определяю, или есть более простой способ? Вот остальная часть моего кода до сих пор:

riverTour = Convert.ToDecimal(ddlRiverTour.SelectedValue); 
baseTourFee = rafters * riverTour; 

Я знаю, что этот код не работает здесь, но я есть, если заявление, которое выглядело так:

if (rivertour = FrBrd) 
{ 
    baseTourFee = rafters * 40; 
} 

Но это кажется намного больше кода, чем нужно, и не работает очень плавно.

+0

что определяет численное значение каждого из «слова» в элементах ListItem? Это переименование или что-то в этом роде? То, что вы просите, чтобы компилятор делал это, практически невозможно ... это похоже на просьбу добавить «кошку» и «собаку» вместе и выйти с 73 – freefaller

+0

Я не вижу ничего плохого в использовании оператора 'if' (кроме * магического числа *, 40). Особенно, если есть только несколько вариантов. Что вы имеете в виду, когда говорите, что «не работает очень гладко», вы можете уточнить? – DGibbs

+0

@DGibbs Когда я говорю, что это не работает гладко, это больше похоже на то, когда я пытаюсь использовать оператор if, как выше, он говорит, что значение не определено. Я даже определяю его, но это не кажется правильным. как мне получить значение и использовать его в выражении if? Я мог бы легко закодировать это и заставить его работать. – Reduls

ответ

0

Не имея способа дать каждому из «слов» в вашем списке <asp:ListItem> элементы определенного численного значения, вы просите компилятор выполнить невозможную задачу.

Если вы уже не есть способ конкретно дать им значения, мое предложение было бы использовать enum, такие как ...

public enum RiverTourEnum 
{ 
    FrBrd = 40, 
    Nant = 50, 
    Tuck = 60, 
} 

Затем вы можете разобрать значение в раскрывающемся меню к соответствующее значение перечисления и использовать номер таким образом ...

string ddVal = ddlRiverTour.SelectedValue; 
RiverTourEnum enumVal = (RiverTourEnum)Enum.Parse(typeof(RiverTourEnum), ddVal); 
int riverTourVal = (int)enumVal; 

Это, очевидно, делает предположение о том, что «слова» в списке имеют статические значения. Если нет, то вы должны смотреть на другой способ «поиска» именно то, что числовое значение следует использовать в тот конкретный момент времени


После повторного прочтения вопрос (и комментарии под ним), если вы действительно хотите использовать if заявления, то вы, вероятно, после того, как что-то вроде этого ...

string riverTour = ddlRiverTour.SelectedValue; 
if (riverTour == "FrBrd") 
{ 
    baseTourFee = rafters * 40; 
} 
else if (riverTour == "Nant") 
... 

Или лучше было бы ...

switch(ddlRiverTour.SelectedValue) 
{ 
    case "FrBrd" : 
    baseTourFee = rafters * 40; 
    break; 
    case "Nant" : 
    ... 
} 
+0

Я только еще не учил перечислениям, но я продолжу и попробую. Это похоже на невозможную задачу, как все говорят, и я согласен. Позвольте мне попробовать ваше решение очень быстро и посмотреть, работает ли оно! – Reduls

+0

Это именно то, что я искал! Я просмотрел свой код, и по какой-то причине у меня было значение DropDownList riverTour как dang decimal, так как это то, что я сделал в последнем упражнении. Большое вам спасибо каждый раз, когда это просто небольшая мелочь, которую я пропустил! Я должен сделать это для своего радиобюджетщика, но теперь я знаю, что делать, и как только я заработаю и сделаю свои расчеты и вернусь, я знаю, как это работает! Я поставил тебя в качестве ответа! Спасибо!!! – Reduls

+0

Отличный - рад, что вы его отсортировали @Reduls - удачи с остальной частью вашего проекта :-) – freefaller

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