在我的网络方法中,我正在动态创建一个表
Public Table Buildtbl
{
Table mytable = new Table();
TableRow th = new TableRow();
TableHeaderCell tc1 = new TableHeaderCell();
tc1.Text = "Header1";
TableHeaderCell tc2 = new TableHeaderCell();
tc2.Text = "Header2";
TableHeaderCell tc3 = new TableHeaderCell();
tc3.Text = "Rheader3";
TableHeaderCell tc4 = new TableHeaderCell();
tc4.Text = "header4";
th.Cells.Add(tc0);
th.Cells.Add(tc1);
th.Cells.Add(tc2);
th.Cells.Add(tc3);
th.Cells.Add(tc4);
mytable.Rows.Add(th)
return mytable.
}
在我的ajax电话中,我打电话如下。
`$`.ajax({
type: "POST",
url: "WebForm1.aspx/Buildtbl",
data: "{}",
contentType: "application/json; charset=utf-8",
success: function (msg) {
$("#dt2").add(msg.d);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(XMLHttpRequest.responseText);
}
});
我收到以下错误。
在序列化类型的对象时检测到循环引用 'System.Web.UI.WebControls.TableHeaderRow'。
我尝试在服务器端进行序列化(代码隐藏),如下所示
var serializer = new JavaScriptSerializer();
var serializedResult = serializer.Serialize(mytable);
仍然遇到同样的错误。
答案 0 :(得分:0)
我通过在代码behing中创建HTML表来解决,即使用System.Web.UI.HtmlControls.HtmlTable 而不是System.Web.UI.System.Web.UI.WebControls.Table创建表后,我执行以下步骤
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
mytable.RenderControl(htw);
并以字符串形式返回。