2011-07-19 52 views
0

剛開始一個新的ASP項目,出於某種原因,我的下拉數據源和數據綁定似乎沒有正常工作,當一切都在那裏,沒有錯誤拋出。控件.DataSource/.Databind無法正常工作

 List<ProductEntity> products = new List<ProductEntity>(); 
     ProductManager productManager = new ProductManager(); 

     products = productManager.GetProducts(); 

     ddlProducts.DataSource = products; 
     ddlProducts.DataBind(); 

的asp代碼。

 int colCounter = 0; 
     List<ProductEntity> products = new List<ProductEntity>(); 
     DataTable dt = new DataTable("Products"); 
     SqlDataReader dr = null; 
     SqlCommand cmd = new SqlCommand(); 
     using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["FIConnection"].ConnectionString)) 
     { 
      cmd.Connection = cn; 
      cmd.CommandType = CommandType.StoredProcedure; 
      cmd.CommandText = "dbo.SV_GetProduct"; 


      cn.Open(); 
      dt.Load(dr = cmd.ExecuteReader()); 
      cn.Close(); 
     } 
     foreach (DataRow rows in dt.Rows) 
     { 
      ProductEntity prod = new ProductEntity(); 
      foreach (DataColumn columns in dt.Columns) 
      { 
       if (colCounter == 0) 
       { 
        prod.ProductDesc = Convert.ToString(rows[columns]); 
        colCounter++; 
       } 
       else if (colCounter == 1) 
       { 
        prod.FormingCode = Convert.ToString(rows[columns]); 
        colCounter = 0; 
       } 
      } 
     } 
     return products; 

和GetProducts代碼。

單步執行項目GetProducts成功返回數據。即使一切看上去都是按順序的,我仍然無法將其綁定。我的數據綁定嘗試是在頁面加載中,甚至是我之前完成的,但這次似乎沒有工作。如此困惑,任何幫助都會受到極大的困擾。

+1

你設置了DataTextField和DataValueField屬性的值? – N0Alias

+0

我有和我得到相同的結果 –

回答

1

不完全瞭解您的問題。 還別說下拉列表DDL的以下屬性

ddl.DataTextFeild="Feild to Display"; ddl.DataValueFeild="Feild ID";

+0

雅,我剛剛做到了,我得到了它的工作,我也忘了添加到我在Get函數中返回的列表。今天對我來說不是好日子,哈哈。感謝大家的幫助。 –

+0

你錯過了一次。你不會將它標記爲答案:P –

1

可能,這將幫助你

namespace WebApplication3 
{ 
    public partial class _Default : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      DropDownList1.DataSource = GetProducts(); 
      DropDownList1.DataTextField = "FormingCode"; 
      DropDownList1.DataValueField = "ProductDesc"; 
      DropDownList1.DataBind(); 
     } 

     private List<Product> GetProducts() 
     { 
      List<Product> ret = new List<Product>(); 
      for (int i = 0; i < 100; i++) 
      { 
       Product p = new Product(); 
       p.ProductDesc = i; 
       p.FormingCode = i.ToString(); 
       ret.Add(p); 
      } 
      return ret; 
     } 
    } 

    public class Product 
    { 
     public int ProductDesc { get; set; } 
     public string FormingCode { get; set; } 
    } 
}