You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么我的ASP.NET网页上绑定SqlDataSource的DataList不展示数据?

问题原因
  • 核心问题是DataList控件未关联配置好的SqlDataSource数据源:你提供的DataList标签中没有添加DataSourceID="SqlDataSource1"属性,控件无法识别数据源位置,自然不会渲染任何列表内容。
  • 其他可能原因:
    • 数据库menuInfo表本身为空,或者Cms_AspFormsConnectionString连接字符串配置错误,导致SqlDataSource查询不到任何数据
    • 如果你选择后台手动绑定数据的实现方式,没有在Page_Load生命周期中调用DataList1.DataBind()方法触发数据绑定逻辑
解决步骤
  1. 优先选择控件绑定方案,直接给DataList添加数据源关联属性即可,修改DataList标签代码如下:
<asp:DataList ID="DataList1" runat="server" RepeatColumns="3" RepeatDirection="Horizontal" OnItemCommand="DataList1_ItemCommand" DataSourceID="SqlDataSource1">
<!-- 原有ItemTemplate内容保持不变 -->
</asp:DataList>
  1. 完成第一步后如果仍无数据,做如下校验:
    • 检查web.config中Cms_AspFormsConnectionString连接字符串的数据库地址、账号权限、库名是否配置正确
    • 直接在对应数据库中执行查询语句SELECT [menuName], [menuPrice], [menuImage], [Id] FROM [menuInfo],确认是否有返回数据
  2. 若你更倾向于后台手动绑定数据,可删除页面上的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 14:09:04