控件.DataSource / .Databind无法正常运行

时间:2011-07-19 13:14:16

标签: asp.net data-binding

刚刚启动了一个新的ASP项目,由于某种原因我的下拉数据源和数据绑定似乎没有正常工作,当一切都在那里并且没有抛出错误。

        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会成功返回数据。即使一切看起来都井井有条,我也无法绑定它。我对数据绑定的尝试是在页面加载上,即使我之前做过,但这次似乎没有工作。如此困惑,任何帮助都会被大大诟病。

2 个答案:

答案 0 :(得分:1)

不完全理解你的问题。 还要提到dropdownlist ddl的以下属性

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

答案 1 :(得分: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; }
    }
}