Asp.Net js得到后台数据

前台页面上有一个JS定义的树结构(dtree)。
js中的添加语句: d.add(1,0,'XXX.html')
d代表 tree对象
其中第一个参数是本字段的ID,第二个是父ID,第三个是链接。
我的问题是:
怎样把SQL-server中的数据动态添加到JS树中呢?最好有清晰的逻辑和完整代码。各位英雄好汉,帮帮小弟忙吧,小弟把所有的钱都给你了!
很急很急!!!!

用js直接得数据,安全性不允许,所以从别的方面着手,看你的要求,其实说白了,就是要生成树,那么,只需要将数据取出来生成树即可。

假设数据库中有表 t_tree,采用无限级分类设置
字段有:
ID,//节点ID
parentNodeID, //父级节点ID
nodeName, //节点名称
nodeLink //节点链接,就是你的 xxx.html

那么:
前台:

<div id="treeStr" runnat=server></div>

用asp.net得到datatable(用asp.net的填充,填充到dt),如下:
string treeStr = "<script>";
treeStr = "";//这里可以放树的树始化等其它javascript的东西。
for(int i=0;i<dt.rows.count;i++)
{
treeStr += "d.add("
treeStr += dt.rows[i]["ID"].toString() + ",";
treeStr += dt.rows[i]["parentNodeID"].toString() + ",";
treeStr += dt.rows[i]["treeLink"].toString() +");";//这里最后一个括号及分号是前台js的
}
treeStr += "</script>";
treeStr.innerHTML = treeStr;
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-10-06
[xhtml] view plaincopy
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">

<html xmlns="">
<head runat="server">
<title>asp.net获取前台js表格的数据</title>
<style type="text/css"><!--
.dis-ime
{
ime-mode:disabled;
}

-->
</style>
</head>
<body>
<form id="form1" runat="server">
<h3>使用客户端添加表格的保存</h3>
<p>
主是就是在提交到服务器之前,处理好表格里的信息,然后赋值给hidden<br />
to mqtheone:这里我设置最后一列只能输入数字了,你可以参考一下
</p>
<div>

<table id="tab1">
<tr>
<th>名称</th>
<th>内容</th>
<th>值</th>
<th></th>
</tr>
<tr>
<td><input type="text" /></td>
<td><input type="text" /></td>
<td><input type="text" class="dis-ime" onkeypress="return check(event)"/></td>
</tr>
</table>
<input type="button" style="margin-left:400px" mce_style="margin-left:400px" value="添加信息" id="btnAddInfo" /><br />
<asp:Button ID="Button1" runat="server" Text="提交" OnClientClick="initData();"
onclick="Button1_Click" />
<asp:HiddenField ID="HiddenField1"
runat="server" />

</div>
</form>
</body>
<script type="text/javascript"><!--
var $=function(){return document.getElementById(arguments[0]);};

var check=function(e) {
return e.keyCode<=57 && e.keyCode>=48
}

$("btnAddInfo").onclick=function() {
var tb=$("tab1");//to mqtheone:这里你可用服务器那个table的id,或者查找页面的第一个table
var row=tb.insertRow(tb.rows.length);
for(var i=0;i<2;i++) {
var td=row.insertCell(i);
td.innerHTML="<input type='text'/>";
}
row.insertCell(row.cells.length).innerHTML="<input type='text' class='dis-ime' onkeypress='return check(event)'/>";//样式表禁用输入法,再过滤再数字字符,还没有禁用粘贴,
row.insertCell(row.cells.length).innerHTML="<input type='button' onclick='return remove(this)' value='移除'/>";
}
var remove=function(obj) {
var tr=obj.parentNode.parentNode;
tr.parentNode.removeChild(tr);
}

var initData=function() {
var tb=$("tab1");
var data=[];
for(var i=1;i<tb.rows.length;i++) {
if(tb.rows[i].cells[0].firstChild.value.length>0 && tb.rows[i].cells[1].firstChild.value.length>0) {//将两个文本框里值不为空的项添加到数组,假设只有前两列的数据不能为空
data.push(tb.rows[i].cells[0].firstChild.value);
data.push(tb.rows[i].cells[1].firstChild.value);
data.push(tb.rows[i].cells[2].firstChild.value);
} //else {这里可以给个提示说数据没填完整,是否提交,否则return false}
}
$("HiddenField1").value=data.join("`");//使用这个比较不常用 的字符将数组拼接成字符串
return true;
};
//这里可以增加一个方法判断 hidden是否为空,如果不为空,获取数据遍历,添加到表格中
// --></script>
</html>

后台获取 :

[c-sharp] view plaincopy
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
protected void Button1_Click(object sender, EventArgs e)
{
if (HiddenField1.Value != "")
{
string[] datas = HiddenField1.Value.Split('`');
int i = 0;
System.Collections.Hashtable tb = new System.Collections.Hashtable();
DataTable dt = new DataTable();//取出数据放进DataTable
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Content", typeof(string));
dt.Columns.Add("Value", typeof(int));
while (i < datas.Length)
{
string str1=datas[i];//这样就取出数据了
string str2 = datas[i + 1];
string str3 = datas[i + 2];
int v = 0;
int.TryParse(str3, out v);
DataRow dr = dt.NewRow();
dr["Name"] = str1;
dr["Content"] = str2;
dr["Value"] = v;
dt.Rows.Add(dr);
i += 3;
}
Response.Write("数据行数为"+dt.Rows.Count);
}
}
}
第2个回答  2010-01-28
后台输入HTML,如:定义JS函数,function aa(value){alert(value)};

后才代码可以
TreeView1.Attributes.Add("onclick","aa("+this.TreeView1.Node.....Value+")");
这样。

方法很多,还可以后台拼HTML,某事件调用前台aa()函数;
还可以Hide传值
第3个回答  2010-01-28
这肯定是要用到ajax,举个例子吧,用jquery框架,。
1、javascript发送请求,请求构建数的数据
$.getJSON('tree.ashx',function(data){ //发送ajax请求,获取后台生成的json数组。
for(var index=0;index<data.length;index++)
{
d.add(data[index].本字段的ID,data[index].父ID,data[index].链接);
}
});

tree.ashx问价中 处理这个ajax请求

1,数据库中取出数据。
2、组织成json结构,json结构为以下形式。
[{本字段的ID:'1',父ID:'2',链接,''},{本字段的ID:'2',父ID:'2',链接,''}]
以字符串形式输出即
response.Write();
第4个回答  2010-01-28
var arr = [[1,0,'a.html'],[2,1,'b.html']...];//这些由后台输出,如:
d.add(arr[0][0],arr[0][1],arr[0][2]);

.aspx
var arr = <%=arr%>;
.aspx.cs
protected string arr;
page_load(){
arr = "[[1,0,'a.html'],[2,1,'b.html']...]";
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网