簡體   English   中英

在C#中使用AJAX綁定gridview時報告“未定義”

[英]'undefined' reported when bind gridview using AJAX in C#

我想使用AJAX綁定gridview。 因此,為此,我使用AJAX和服務器端代碼作為網絡方法來完成客戶端代碼。

即使當時我以成功的方法向數據發出警報,一切也都正常,但仍在顯示數據,但在循環中,我真的很困惑,它在警報中顯示未定義。 因此,這就是網格未綁定的原因。

這是我的代碼

$.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執行查詢,並返回查詢返回的結果集中第一行的第一列。 其他列或行將被忽略。

在這種情況下,您將只有一個string

其次要注意在查詢的名稱把它作為schoolname[School Name]

然后,您必須Serialize化為json並再次parse為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);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM