我已将会话变量中的数据表存储为
Session["dt"]=dt;
我正在Javascript中访问它,出于某种目的
var oTable = '<%=Session["dt"] %>';
var oRows = oTable.fnGetNodes(); // Error here
for (var i = 0; i < oRows.length; i++) {
var x = parseInt(cells.push($(oRows[i]).find("td:eq(1)").html()));
}
但是它会抛出错误对象不支持此属性可能会出现什么问题但是任何一个帮助
修改: 对于您的信息,我只是获取数据表来获取其中的值并将其用于某些条件
我通过你的回答没有得到确认就找到了它可能是不可能的,所以我已经将数据序列化并将值传递给我所做的如下隐藏字段
myArray[0] = new { Flag = dt.Rows[0]["Flag"].ToString(),
status = dt1.Rows[0]["Status"].ToString() };
JavaScriptSerializer serializer1 = new JavaScriptSerializer();
sbAllUsers = serializer1.Serialize(myArray);
hfvalue.Value = sbAllUsers;
但我不知道如何在Jquery中访问这个值,任何人都可以帮助我。
答案 0 :(得分:4)
如下所述,从DataTable创建任意类的列表,并使用JavaScriptSerializer
进行序列化。并将结果设置为hiddenfield hdnControl
,现在在客户端从隐藏字段获取值并将其解析为JSON,现在您可以访问数据。
<强> C#强>
JavaScriptSerializer oSerializer = new JavaScriptSerializer();
var Result = (from c in dt.AsEnumerable()
select new
{
Flag = c.Field<bool>("Flag"),
Status = c.Field<string>("Status")
}).ToList();
hdnControl.Value = oSerializer.Serialize(Result);
<强>的Javascript 强>
var oTable = JSON.parse($("#hdnControl").val());
$(oTable).each(function(index, val){
console.log(val.Flag);
console.log(val.Status);
})
答案 1 :(得分:0)
对象不支持.... - &gt;是一个Javascript错误...
你无法覆盖这样的复杂类型。 您必须先将其序列化为字符串格式 - &gt; JSON字符串或普通字符串。
也许这篇文章可能对您有所帮助,如何将数据表序列化为json字符串: Convert datatable to JSON in C#
protected void Page_Load(object sender, EventArgs e)
{
ICollection<MessageDTO> list = new List<MessageDTO>();
for (int i = 0; i < 10; i++)
{
var obj = new MessageDTO() { UserId = i, DateCreated = DateTime.Now, Content = i.ToString(), ChatRoomId = 1, MessageId = i };
list.Add(obj);
}
MyCustomStringProp = JsonConvert.SerializeObject(list);
}
public string MyCustomStringProp { get; set; }
从Javascript获取数据: - &GT;下载以下JSON脚本并在ur页面中引用它: JSON2.js
var oTable = '<%= this.MyCustomStringProp %>';
var parsed = JSON.parse(oTable);
alert(oTable);