2011-08-15 44 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

我想我应该切换到,是否没有办法抓住选择名称=“人口”? – 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

相关问题