加载时无法加载 Gridview
Posted
技术标签:
【中文标题】加载时无法加载 Gridview【英文标题】:Not able to load the Gridview on Load 【发布时间】:2018-03-26 09:19:22 【问题描述】:我无法在页面加载时加载 gridview。它一直在给我
未捕获的类型错误:无法读取未定义的属性“长度”。 我已经提到了下面的代码和处理程序。请帮我解决问题。问题发生在 Jquery 中。
<script type="text/javascript">
$(document).ready(function ()
BindGridView();
);
function BindGridView()
$.ajax(
type: "POST",
url: "../Pm/uc/G.ashx/GetMailDetail",
contentType: "application/json;charset=utf-8",
data: ,
dataType: "json",
success: function (data)
if (data.d.length > 0)
$("#grdDemo").append("<tr><th>Username</th></tr>");
for (var i = 0; i < data.d.length; i++)
$("#grdDemo").append("<tr><td>" +
data.d[i].Username + "</td> <td>");
,
error: function (result)
);
</script>
<asp:GridView ID="grdDemo" runat="server">
</asp:GridView>
这是在处理程序中。(您可以将查询替换为任何内容。)
public void ProcessRequest(HttpContext context)
//int mailid = int.Parse(context.Request["mid"]);
//var detail = GetMailDetail(mailid);
var detail = GetMailDetail();
if (detail != null)
context.Response.ContentType = "application/json";
string json = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(detail);
context.Response.Write(json);
else
context.Response.StatusCode = 404;
//protected object GetMailDetail(int mailid)
protected object GetMailDetail()
List<DetailsClass> Detail = new List<DetailsClass>();
Connection Con = new Connection();
String Connection = Con.Active_Connection();
SqlConnection con = new SqlConnection(Connection);
con.Open();
DataTable dt = new DataTable();
SqlCommand cmd = new SqlCommand("select Sp4_Txt from Sp4", con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dtGetData = new DataTable();
da.Fill(dtGetData);
foreach (DataRow dtRow in dtGetData.Rows)
DetailsClass DataObj = new DetailsClass();
DataObj.Username = dtRow["Sp4_Txt"].ToString();
Detail.Add(DataObj);
return Detail.ToArray();
public class DetailsClass //Class for binding data
public string Username get; set;
public bool IsReusable
get
return false;
【问题讨论】:
嗨,你能在 $(document) 之前声明函数“函数 BindGridView()”吗?准备好进行任何更改了吗? 你为什么访问data.d.length
? d
在哪里?你期望那会是什么?您是否查看了浏览器的网络控制台以确保您在 AJAX 调用中从服务器接收到您期望的内容?
您为什么不正确处理您的IDisposable 对象,例如 SqlConnection?为什么首先将数据放入 DataTable 而不是直接放入强类型类?
有人可以帮我写代码吗?
【参考方案1】:
无法读取未定义的属性“长度”。
出现此错误是因为您在没有检查data
的情况下访问data.d
并且在没有检查data.d
的情况下访问data.d.length
做这样的事情:
if(data)
if(data.d)
if (data.d.length > 0)
$("#grdDemo").append("<tr><th>Username</th></tr>");
for (var i = 0; i < data.d.length; i++)
$("#grdDemo").append("<tr><td>" +
data.d[i].Username + "</td> <td>");
【讨论】:
以上是关于加载时无法加载 Gridview的主要内容,如果未能解决你的问题,请参考以下文章
Android--Gridview使用SimpleAdapter加载bitmap图片
Android--Gridview使用SimpleAdapter加载bitmap图片