2015-02-04 9 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 항목의 "단어"? 그것은 '열거 형 (enum)'인가? 컴파일러에게 무엇을하도록 요구하는지는 사실상 불가능합니다 ... "cat"과 "dog"를 함께 추가하고 7323과 함께 나오라고하는 것과 같습니다. – freefaller

+0

'if' 문을 사용하여 문제가 발생하지 않습니다 (* 마법 번호 *, 40 제외). 특히 몇 가지 옵션이있는 경우 특히 그렇습니다. 당신이 '매우 원활하게 작동하지 않는다'고 말할 때 당신은 무엇을 의미합니까, 당신은 정교 할 수 있습니까? – DGibbs

+0

@DGibbs 내가 말할 때 부드럽게 작동하지 않을 때 위와 같은 if 문을 사용하려고 할 때처럼 값이 정의되어 있지 않다고 말하는 것과 비슷합니다. 나는 심지어 그것을 정의한다. 그러나 그것은 올바르게 보이지 않는다. 어떻게 가치를 얻고 if 문에서 사용합니까? 나는 그것을 쉽게 코드화하여 작동시킬 수있다. – Reduls

답변

0

<asp:ListItem> 요소의 목록에있는 "단어"각각에 특정 숫자 값을 부여하지 않고 컴파일러에게 불가능한 작업을 수행하도록 요청하고 있습니다. 이미 특별히 그들에게 가치를 제공 할 방법이없는 경우

, 내 제안은

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

는 그런 다음에 드롭 다운에 값을 구문 분석 할 수 있습니다 ... 같은 enum 등을 사용하는 것입니다 적절한 숫자 값을 사용하고 그 숫자를 사용하십시오.

이것은 분명히 목록의 "단어"에 정적 값이 있다고 가정합니다. 그렇지 않다면, 당신은 다른 방법으로 볼 필요가 "조회"숫자 값은 당신이 정말로 원하는 경우, (그리고 그 아래 댓글) 다시 질문을 읽은 후 특정 시간


에서 사용되어야 정확하게 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

나는 enums를 아직 가르쳐주지 못했지만 나는 앞으로 나아가 그것을 시도 할 것이다. 모두가 말하는 것처럼 불가능한 일처럼 보입니다. 나는 동의합니다. 귀하의 솔루션을 신속하게 시험해보고 작동하는지 확인하겠습니다. – Reduls

+0

바로 그게 내가 찾고 있던거야! 내 코드를 살펴본 결과 DropDownList 값 riverTour가 지난 운동에서 수행 한 이후로 어떤 이유로 든 십진수로 설정되었습니다. 내가 놓친 작은 작은 일일 때마다 정말 고마워! 나는 내 radiobuttonlist에 대해 이렇게해야하지만 지금은 무엇을 해야할지 알게되고 일단 실행을하고 계산을 끝내면 얼마나 효과가 있었는지 알려줍니다. 불만이 당신 답을 답장으로 설정합니다! 정말 고마워!!! – Reduls

+0

대단히 기쁩니다 - 다행스럽게도 @Reduls - 프로젝트의 나머지 부분과 함께 행운을 빕니다 :-) – freefaller