2009-11-26 134 views
0

即时通讯使用以下代码来动态填充下拉列表... 我希望该值应该是主题ID和文本应该是sub_desc ...但代码不工作该值不包含sub_ids .. .so这个代码怎么了?动态填充下拉列表

(sub_id是整场)

public void Populate() 
     { 
      string ConnectionString = (string)ConfigurationManager.AppSettings["ConnectionString"]; 
     SqlConnection conn = new SqlConnection(ConnectionString); 
      SqlCommand popCmd = new SqlCommand("select sub_id,sub_desc from subject", conn); 
      try 
      { 
       conn.Open(); 
       ddlSub.Items.Clear(); 

       SqlDataReader subs; 
       subs = popCmd.ExecuteReader(); 


       ddlSub.DataSource = subs; 
       ddlSub.DataValueField = "sub_id"; 
       ddlSub.DataTextField = "sub_desc"; 
       ddlSub.DataBind(); 
       conn.Close(); 
      } 
      catch (Exception ex) 
      { 
       lblMsg.Visible = true; 
       lblMsg.Text = ex.ToString(); 

      } 

     } 

感谢名单...

+0

您必须在dtaabinding之后插入新项目,而不是之前。 – 2009-11-26 14:32:52

+0

在页面生命周期中的哪个点你调用Populate? – Phaedrus 2009-11-26 14:53:19

+0

我打电话给这个方法在页面加载.. – anay 2009-11-26 14:54:46

回答

0

您可以添加数据绑定后的默认值。您需要插入索引0而不是添加。

3

您可以设置AppendDataBoundItems="true"以确保数据绑定项不会清除手动插入的列表项。

<asp:DropDownList ID="DropDownList" runat="server" AppendDataBoundItems="true"> 
    <asp:ListItem Value="--Select Subject--" Text="--Select Subject--" Selected="true"></asp:ListItem> 
</asp:DropDownList> 

您也可以在代码中实现这一点的背后。

... 
dropSub.Items.Add(new ListItem("--Select Subject--", "0")); 
dropSub.AppendDataBoundItems = true; 
SqlDataReader subs; 
subs = popCmd.ExecuteReader(); 
ddlSub.DataSource = subs; 
ddlSub.DataValueField = "sub_id"; 
ddlSub.DataTextField = "sub_desc"; 
ddlSub.DataBind(); 
conn.Close(); 
...