使用虚拟代码从SSMS拉取数据的ASP.NET下拉列表报错解决
ASP.NET下拉列表报错解决办法
先明确核心问题
从报错截图来看,错误提示是DataBinding: 'System.Data.DataRowView' does not contain a property with the name 'xxx'——这跟C#的string和SQL的varchar类型没有关系,大概率是你绑定下拉列表时指定的字段名,和SQL查询返回的字段名不匹配。
关于类型兼容的说明
别纠结string和varchar的差异了,这俩完全兼容,直接映射不会报错。真遇到SQL字段为空的情况,用ISNULL(字段名, '默认文本')在SQL语句里处理就行。
正确的下拉列表绑定步骤
- 写出正确的SQL查询语句
string sql = "SELECT 主键字段名, 显示文本字段名 FROM 你的数据表"; SqlCommand cmd = new SqlCommand(sql, 你的数据库连接对象); SqlDataAdapter adapter = new SqlDataAdapter(cmd); DataTable dt = new DataTable(); adapter.Fill(dt);
- 绑定到下拉列表(字段名必须和SQL查询结果完全一致,大小写都不能错)
ddl你的控件ID.DataSource = dt; ddl你的控件ID.DataValueField = "主键字段名"; ddl你的控件ID.DataTextField = "显示文本字段名"; ddl你的控件ID.DataBind();
- 确认ASPX页面的控件ID和后台代码一致
<asp:DropDownList ID="ddl你的控件ID" runat="server"></asp:DropDownList>
额外排查点
- 检查数据库连接是否正常,连接字符串别写错,绑定前确保连接已打开。
- 确认SQL查询能返回数据,要是查出来是空表,下拉列表只会为空,不会报绑定错误。
内容的提问来源于stack exchange,提问作者Ozzy
相关产品推荐
相关产品推荐

