2011-08-15 2 views
1

다음 형식은 리터럴에 추가 된 코드입니다. 뒤에있는 코드에서 select = name = "populationSelect".... 데이터를 가져 오거나 설정합니다.ASP.Net의 리터럴에서 선택 상자 가져 오기/설정 코드 숨김

protected void PopulatePopulation() 
{ 
    StringBuilder sb = new StringBuilder(); 
    StringBuilder sql = new StringBuilder(); 

    // Define sql 
    sql.Append("SELECT pid, population "); 
    sql.Append("FROM populations "); 
    sql.Append("ORDER BY pid ASC "); 

    using (IDataReader reader = SqlHelper.GetDataReader(sql.ToString())) 
    { 
     sb.AppendLine("<div class=\"narrowRes\">Poulation</div><select name=\"populationSelect\" class=\"narrowResSelect\"><option value=\"0\">All populations</option>"); 

     while (reader.Read()) 
     { 
      int pid = reader.IsDBNull(0) ? -1 : reader.GetInt32(0); 
      string population = reader.IsDBNull(1) ? string.Empty : reader.GetString(1); 

      population = population.Trim(); 

      sb.AppendLine(string.Format("<option value=\"{0}\">{1}</option>", pid, population)); 
     } 
    } 

    sb.AppendLine("</select>"); 

    ltrlExplorePopulation.Text = sb.ToString(); 
} 
+1

이러한 컨트롤을 동적으로 만들어야합니까? asp.net DropDownList를 만들고 코드 숨김에서 컨트롤을 추가 할 수없는 이유가 있습니까? –

+0

나는 그것을 바꿔야한다고 생각하는데, 선택 이름 = "population"을 잡을 방법이 없을까? – cdub

답변

2

쉽지 않음. Asp.net 컨트롤 (드롭 다운 목록과 같은) 대신 리터럴을 사용하기 때문에 asp.net은 코드 뒤에 사용할 컨트롤을 만들지 않습니다.

요청 매개 변수를 통해 값에 액세스 할 수 있다고합니다.

var value = Request["populationSelect"]; 

더 나은 해결책은 페이지와 데이터 바인딩에 드롭 다운 목록 컨트롤을 만드는 것입니다.

if (!IsPostBack) 
{ 
    List<ListItem> data = new List<ListItem>(); 
    using (IDataReader reader = SqlHelper.GetDataReader(sql.ToString())) 
    { 
     //sb.AppendLine("<div class=\"narrowRes\">Poulation</div><select name=\"populationSelect\" class=\"narrowResSelect\"><option value=\"0\">All populations</option>"); 

     while (reader.Read()) 
     { 
      int pid = reader.IsDBNull(0) ? -1 : reader.GetInt32(0); 
      string population = reader.IsDBNull(1) ? string.Empty : reader.GetString(1); 

      population = population.Trim(); 
      data.Add(new ListItem(population, pid.ToString())); 
      //sb.AppendLine(string.Format("<option value=\"{0}\">{1}</option>", pid, population)); 
     } 
    } 
    DropDownList1.DataSource = data; 
    DropDownList1.DataBind(); 
} 
+0

나는 그것을 더 쉽게 만들 수있는 문자 그대로의 컨트롤에서 전환 할 것이다. – cdub