2009-11-26 129 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(); 
...