在 ASP.NET C# 中从 Datatable 返回值(所有字段)到 AJAX

Returning Value(all fields) from Datatable to AJAX in ASP.NET C#

我在网上搜索过,但没有找到答案,也许你们可以提供帮助。我是 ASP.NET C#

的新手

我的aspx.cs代码

[WebMethod]
[ScriptMethod]
public static string GetData(int ID)
{
    string SQL = "Select ID, FirstName, MiddleName, LastName from tbl_demo1 where ID = '" + ID + "'";
    DataTable dt = new DataTable();
    SqlDataAdapter da = new SqlDataAdapter(SQL, cn);
    da.Fill(dt);
    if(dt.Rows.Count > 0)
    {
        return dt.Rows[0].ItemArray[0].ToString();
    }
    return "";
}

问题:这部分

return dt.Rows[0].ItemArray[0].ToString();

在这部分我想return所有字段(ID、FirstName、MiddleName、LastName)..我该怎么做?

这是您要求的代码部分:

if (dt.Rows.Count > 0)
{
   DataRow row = dt.Rows[0];
   string str = row["ID"].ToString() + row["FirstName"].ToString() + row["MiddleName"].ToString() + row["LastName"].ToString();
   return str;
}

如果你想return它作为一个KVP阵列,使用如下

SortedList<string, string> rowObj = new SortedList<string, string>();
rowObj.Add("ID", row["ID"].ToString());
rowObj.Add("FirstName", row["FirstName"].ToString());
rowObj.Add("MiddleName", row["MiddleName"].ToString());
rowObj.Add("LastName", row["LastName"].ToString());
return (new JavaScriptSerializer().Serialize(rowObj));

可以使用jQuery调用:

jQuery.ajax({
    type: "POST",
    url: "YourFileService.asmx/GetData",
    data: "{'ID':" + ID + "}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (data) {
        if (typeof data.d != "undefined") {
            var res = JSON.parse(data.d);
            alert(res.FirstName)
        } else {
            if (window.console) {
                console.log('Unknown error,');
            }
        }
    },
    error: function (xhr, errorType, exception) {
        //raise an error
        alert(xhr.responseText);
    },
    failure: function (response) {
        //failure, raise an error
        alert(response.responseText);
    }
});