2011-04-01 2 views
1

ASP.NET DropDownList로 선택된 값을 반환하지 않습니다 내 ASP.NET 페이지 (대상 : .NET 4.0)에서 나는이 (가) DropDownList의 선언은 다음과 같습니다SelectetValue 내가 천천히 다음과 같은 문제를 통해 미친거야

에서 Page_Load 이벤트에서
<asp:DropDownList ID="cmbRequestState" runat="server" EnableViewState="true"> 
    <asp:ListItem Text="Pending" Value="0"></asp:ListItem> 
    <asp:ListItem Text="Open" Value="1"></asp:ListItem> 
    <asp:ListItem Text="Closed" Value="2"></asp:ListItem> 
</asp:DropDownList> 

코드 숨김 내가 예를 들어 cmbRequestState 값을 "2"로 설정 - 모두의 벌금을, 브라우저에서 콤보 상자에 표시된 값은 HTML의 각 <option> 태그로, "닫기" selected="selected" 특성을가집니다.

그런 다음 "열기"를 선택하고 내 페이지에서 "저장"버튼을 사용하여 다시 게시를 수행합니다. 단추의 코드에서 cmbRequestState에 대한 SelectedValue을 검색 할 때 "1"을 선택했지만 여전히 "2"입니다.

ASP.NET 응용 프로그램을 너무 자주 작성하지 않지만 HTML 및 PHP 프로그래밍 및 WinForms 및 WPF 배경에서 현재 선택되어있는 값이 SelectedValue에 포함될 것으로 예상됩니다. 또한 사용자가 목록에서 값을 선택할 때마다 다시 게시를 수행하고 싶지 않습니다.

무엇이 여기에 있습니까? 페이지를 열 때 현재 요청 상태가 선택되고 사용자가 변경 한 경우에도 새 선택 항목을 계속 가져올 수 있도록하려면 어떻게해야합니까?

+1

코드 숨김 (적어도 Page_Load의 관련 부분)을 추가 할 수 있습니까? 요청이 다시 게시인지 아닌지를 Page_Load 메서드에서 확인하지 않는 것 같습니다. 'IsPostback'을 확인하고 있습니까? –

+0

아니, 나는 그것을 체크하지 않았다 ... 내가 말했던 것처럼 : * FACEPALM *, 그리고 또한 당신에게 대답 해 주셔서 감사합니다. –

+0

하하, FACEPALM을 처음에는 이해하지 못했습니다. 나는 잘 모르는 약자라고 생각했습니다. :-) –

답변

2

page lifecycle에 따르면 Page_Load 이벤트에 지정한 값이 버튼의 OnClick 이벤트에서 설정 한 값을 덮어 씁니다. 컨트롤에 값을 할당 할 때 페이지 수명주기를 일치시켜야합니다.

+0

1) * FACEPALM * - 고마워요! 2) 1) –

3

Page_Load에서 포스트 백 요청인지 확인하십시오. 그렇다면 콤보 상자를 초기화하지 마십시오.

if (!IsPostback) { 
    cmbRequestState.SelectedValue = "2"; 
} 
관련 문제