ASP.NET服务器错误将数据绑定到下拉列表

时间:2015-01-05 17:41:46

标签: c# asp.net datatable

这是我非常简单的测试下拉列表:

<asp:DropDownList runat="server" ID="Test" />

这是我背后的代码:

protected void Page_Load(object sender, EventArgs e)
{
    DataTable dt = new DataTable(); 
    dt.Columns.Add(new DataColumn("Value", typeof(Int32)));
    dt.Columns.Add(new DataColumn("Text", typeof(String)));

    DataRow dr = dt.NewRow(); 
    dr[0] = 1;
    dr[1] = "Test of text";
    dt.Rows.Add(dr); 

    Test.DataSource = "dt";
    Test.DataValueField = "Value";
    Test.DataTextField = "Text";
    Test.DataBind();
}

当我尝试加载页面时,出现以下错误:

Server Error in '/' Application.
DataBinding: 'System.Char' does not contain a property with the name 'Text'.

有没有人对这里发生的事情有任何想法?

2 个答案:

答案 0 :(得分:1)

您应该以这种方式引用DataSource:

Test.DataSource = dt;

引用DataTable对象,而不是“dt”字符串。

答案 1 :(得分:1)

Dt不是字符串,而是Variable并检查AutoPostBack以便DropDownList仅绑定一次。

    protected void Page_Load(object sender, EventArgs e)
    {

    if(!Page.IsPostBack)

     {

    DataTable dt = new DataTable(); 
    dt.Columns.Add(new DataColumn("Value", typeof(Int32)));
    dt.Columns.Add(new DataColumn("Text", typeof(String)));

    DataRow dr = dt.NewRow(); 
    dr[0] = 1;
    dr[1] = "Test of text";
    dt.Rows.Add(dr); 

    Test.DataSource = dt;
    Test.DataValueField = "Value";
    Test.DataTextField = "Text";
    Test.DataBind();


     }


    }