为什么我的ASP.NET网页上绑定SqlDataSource的DataList不展示数据?
问题原因
- 核心问题是
DataList控件未关联配置好的SqlDataSource数据源:你提供的DataList标签中没有添加DataSourceID="SqlDataSource1"属性,控件无法识别数据源位置,自然不会渲染任何列表内容。 - 其他可能原因:
- 数据库
menuInfo表本身为空,或者Cms_AspFormsConnectionString连接字符串配置错误,导致SqlDataSource查询不到任何数据 - 如果你选择后台手动绑定数据的实现方式,没有在
Page_Load生命周期中调用DataList1.DataBind()方法触发数据绑定逻辑
- 数据库
解决步骤
- 优先选择控件绑定方案,直接给DataList添加数据源关联属性即可,修改DataList标签代码如下:
<asp:DataList ID="DataList1" runat="server" RepeatColumns="3" RepeatDirection="Horizontal" OnItemCommand="DataList1_ItemCommand" DataSourceID="SqlDataSource1"> <!-- 原有ItemTemplate内容保持不变 --> </asp:DataList>
- 完成第一步后如果仍无数据,做如下校验:
- 检查web.config中
Cms_AspFormsConnectionString连接字符串的数据库地址、账号权限、库名是否配置正确 - 直接在对应数据库中执行查询语句
SELECT [menuName], [menuPrice], [menuImage], [Id] FROM [menuInfo],确认是否有返回数据
- 检查web.config中
- 若你更倾向于后台手动绑定数据,可删除页面上的SqlDataSource控件,在Menu.aspx.cs的Page_Load方法中添加绑定逻辑:
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { string connStr = System.Configuration.ConfigurationManager.ConnectionStrings["Cms_AspFormsConnectionString"].ConnectionString; using (System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(connStr)) { string sql = "SELECT [menuName], [menuPrice], [menuImage], [Id] FROM [menuInfo]"; System.Data.SqlClient.SqlDataAdapter da = new System.Data.SqlClient.SqlDataAdapter(sql, conn); System.Data.DataTable dt = new System.Data.DataTable(); da.Fill(dt); DataList1.DataSource = dt; DataList1.DataBind(); } } }
内容的提问来源于stack exchange,提问作者joy
相关产品推荐
相关产品推荐

