2011-05-16 6 views
0

어떤 이유로 드롭 다운 목록의 초기 값이 설정되지 않습니다. 대신 항상 임의의 값을로드합니다. 마크 업을 살펴보면 -1 값을 포함한 모든 목록 항목을 볼 수 있습니다. 나는 또한 브라우저 캐시를 지우고 명시 적으로 0/"- 1"로 코드에서 SelectedIndex/Value를 설정하려고 시도했지만 무슨 일이 일어나고 있는지 파악할 수 없다. 어떤 생각? 여기InitialValue가 RequiredFieldValidator DDL에 설정되지 않았습니다.

내가 그 일을하고 어떻게 :

<asp:DropDownList ID="ddlGender" runat="server" CssClass="select_Box" OnPreRender="LoadGenders"> 
          </asp:DropDownList> 
          <div class="error"> 
           <asp:RequiredFieldValidator          
            ID="RequiredFieldValidatorGender" 
            Runat="server" 
            Enabled="true" 
            InitialValue="-1" 
            ControlToValidate="ddlGender" 
            SetFocusOnError="true"           
            Display="Dynamic">Gender Required</asp:RequiredFieldValidator> 
          </div> 

생성 된 HTML :

<select name="pagecolumns_0$pagecontent_1$contentleftcol_0$ctl00$ddlGender" id="pagecolumns_0_pagecontent_1_contentleftcol_0_ctl00_ddlGender" class="select_Box"> 
<option value="-1">--Select Gender--</option> 
<option selected="selected" value="M">Male</option> 
<option value="F">Female</option></select> 

당신이 볼 수 있듯이, 그것은 무작위로 선택하는 것입니다 남성. Alsow, 나는 내가 마지막으로 타자를 치기 전에 그것을 Male로 설정 한 양식을 채운다는 것을 알아 차렸다. 선택할 수도 있습니다. 여기

는 .cs입니다 :

protected void LoadGenders(object sender, EventArgs e) 
     { 
      if (IsPostBack) return; 
      ((DropDownList)sender).Items.AddRange(Constants.GenderWithSelect); 
     } 
public static ListItem[] GenderWithSelect = (new[] { new ListItem("--Select Gender--", "-1") }).Concat(Gender).ToArray(); 
public static ListItem[] Gender = new[] 
               { 
                (new ListItem("Male","M")), 
                (new ListItem("Female","F")) 
               }; 


+0

ddl의 초기 값은 무엇을 의미합니까? ddl의 생성 마크 업을 볼 수 있습니까? – gbs

+0

.cs 부분을 게시하십시오. 어떻게 드롭 다운 목록을 바인드합니까? –

+0

.cs 및 html 마크 업을 포함하도록 질문을 수정했습니다. – xoail

답변

0

컨트롤의로드 순서와 관련이 있습니다. 그래서, selectedindex를 LoadGenders에 추가하는 것이 트릭을 만들었습니다.

protected void LoadGenders(object sender, EventArgs e) 
    { 
     if (IsPostBack) return; 
     ((DropDownList)sender).Items.AddRange(Constants.GenderWithSelect); 
     ((DropDownList) sender).SelectedIndex = 0; 
    } 
1

난 당신의 코드를 시도하고,이 생성 된 HTML이 옵션을 선택의 "값"에 바인딩 올바른 필드를 가지고 있지 않은 것으로 보인다.

은이 형식이 있어야합니다 받아야 무엇 :

<asp:DropDownList ID="ddlGender" runat="server" CssClass="select_Box" OnPreRender="ddlGender_PreRender" DataValueField="Value" DataTextField="Text"> 

(그냥 DataTextField 및 DataValueField 대체이 있기 위하여

<select name="ctl00$MainContent$ddlGender" id="MainContent_ddlGender" class="select_Box"> 
    <option selected="selected" value="-1">not set</option> 
    <option value="0">0</option> 
    <option value="1">1</option> 
</select> 

, 나는 DropDownList로의 DataValueField을 설정했다 클래스의 속성 이름과 함께)

+0

이 값은 데이터베이스에서 채워지지 않습니다. 따라서 DataValueField를 사용하는 방법을 잘 모릅니다. 질문에 더 많은 정보를 추가했습니다. – xoail

관련 문제