这是我非常简单的测试下拉列表:
<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'.
有没有人对这里发生的事情有任何想法?
答案 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();
}
}