javascript - 在 C# 中使用 AJAX 绑定(bind) gridview 时报告“未定义”

标签 javascript c# asp.net ajax gridview

我想使用 AJAX 绑定(bind) gridview。因此,为此我使用 AJAX 完成了客户端代码,并使用服务器端代码作为 Web 方法。

一切都工作正常,即使我在成功方法中警告数据,当时也显示数据,但在循环中我真的很困惑,它在警报中显示未定义。这就是网格不具有约束力的原因。

这是我的代码

$.ajax({
    type: "POST",
    url: "schoolregistration.aspx/GetGridData",
    contentType: "application/json; charset=utf-8",
    datatype: "json",
    success: function (data) {
        for (var i = 0; i < data.d.length; i++) {
            $("#grid_schooldata").append("<tr><td>" + data.d[i].schoolName);
        }
    },
    failure: function () {
        alert("error! try again...");
    }
});

 

using (var con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
using (var cmd = new SqlCommand("select schoolname as [School Name] from tbl_schoolregistration", con))
{
    con.Open();
    object val = cmd.ExecuteScalar();
    return val == DBNull.Value ? "" : (string)val;
}

最佳答案

首先

ExecuteScalar 执行查询,并返回查询返回的结果集中第一行的第一列。附加的列或行将被忽略。

在这种情况下,您将有一个字符串

其次,请注意查询中的名称,将其保留为 schoolname 而不是 [School Name]

然后,您必须序列化为json,并再次解析为json,以便循环遍历对象。

这是完整的工作代码:

$.ajax({
    type: "POST",
    url: "schoolregistration.aspx/GetGridData",
    contentType: "application/json; charset=utf-8",
    datatype: "json",
    success: function (data) {
        data = JSON.parse(data.d);
        for (var i = 0; i < data.length; i++) {
          $("#grid_schooldata").append("<tr><td>" + data[i].schoolname +"</td></tr>");      
        }
    },
    failure: function () {
        alert("error! try again...");
    }
});



[WebMethod]
public static string GetGridData()
{
    using (var con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
    using (var cmd = new SqlCommand("select schoolname from tbl_schoolregistration", con))
    {
        con.Open();
        //object val = cmd.ExecuteScalar();
        SqlDataAdapter adp = new SqlDataAdapter(cmd);
        DataTable dt = new DataTable();
        adp.Fill(dt); // fills data from select query

        // return val == DBNull.Value ? "" : (string)val;
        return JsonConvert.SerializeObject(dt);
    }
}

关于javascript - 在 C# 中使用 AJAX 绑定(bind) gridview 时报告“未定义”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44992714/

相关文章:

javascript - 多维javascript数组仅影响forEach中的最后一个数组

javascript - 为什么这个 javascript 不起作用 - 选择框如果

javascript - CSS 滑动过渡

c# - 哪个NotifyFilter触发了FileSystemWatcher.Changed?

c# - 如何导航到 UWP 中的参数化构造函数?

c# - 如何使用每个 C# 智能技术将项目从其他列表添加到列表中

c# - WebAPI 帮助页面 - 错误 404

javascript - 从 javascript 编辑点 cookie

c# - Windows Phone 8 usercontrol imagebutton 具有不同状态的不同图像

c# - asp to aspx 创建重定向循环