读书人

estJS动态生成树有关问题

发布时间: 2012-09-28 00:03:35 作者: rapoo

estJS动态生成树问题求助

我要实现的功能是

左边是一个树结构,右边是一个页面,根据点击左侧树的节点(包括子结点和叶子),向右侧页面传递一个参数id ,后台根据id在右边页面显示数据。

小弟不知道节点事件和参数传递在哪里加?请大神指点!


部分代码如下:
js文件
Ext.onReady(function() {
Ext.BLANK_IMAGE_URL = "Extjs3.2.0/resources/images/default/s.gif";
var Tree = Ext.tree;
var tree = new Tree.TreePanel({
el: 'west_content', //渲染到
useArrows: true,
autoHeight: true,
split: true,
lines: true,
autoScroll: true,
animate: true,
enableDD: true,
border: false,
containerScroll: true,
loader: new Tree.TreeLoader({
dataUrl: 'ServletHandlers/GetTrees.ashx'
})
});
var root = new Tree.AsyncTreeNode({
text: 'ICD10-疾病编码',
draggable: true,
id: '0'
});
tree.setRootNode(root);
tree.render();
// root.expand();


后台动态生成的树

public void ProcessRequest(HttpContext context)
{
string strSql = "select ID,ParentID,KindName from EMR_ICD10KIND";
dbOperator db = new dbOperator();
DataTable dt = db.Execute(strSql);
string strResult = "[";
if (dt.Rows.Count > 0)
{
DataRow[] dr = dt.Select("ParentID='1'");
strResult = DtTreeToJson(dt, strResult, dr);
}
strResult += "]";
context.Response.ContentType = "text/plain";
context.Response.Write(strResult.ToString());
context.Response.End();
}

private static string DtTreeToJson(DataTable dt, string strResult, DataRow[] dr)
{
if (dr.Length > 0)
{
for (int i = 0; i < dr.Length; i++)
{

strResult += "{";
strResult += "text:'" + dr[i]["KindName"] + "',";
strResult += "id:'" + dr[i]["ID"] + "',";
DataRow[] drChild = dt.Select("ParentId='" + dr[i]["ID"] + "'");
if (drChild.Length > 0)
{
string id = string.Empty;
strResult += "leaf:false,";
// strResult += "listeners:{\"click\":function(node,event){alert(node.text) ;"++"}},";
// strResult += "href:'toDiseaseDetail.aspx?ID="++"',";
strResult += "href:'toDiseaseDetail.aspx',";
strResult += "hrefTarget:'main',";
// strResult += " listeners: { \"click\": function(node, e){ alert(node.id) } }";
strResult += "children:[";
strResult = DtTreeToJson(dt, strResult, drChild);
strResult += "]";
}
else
{
strResult += "href:'toDiseaseDetail.aspx',";
strResult += "hrefTarget:'main',";
strResult += "leaf:true";


}

strResult += "}";

if (i != dr.Length - 1)
strResult += ",";
}
}
return strResult;
}

[解决办法]

探讨
引用:
tree.on('click',function(item){
alert(item.id);
})

自己处理吧,ext tree不触发服务器事件,如果要将参数传递到后台请使用ajax
其实都前台处理才是对的,界面的问题弄到服务器去处理不是合适的结构


前台处理,怎么显示查询数据呢?

读书人网 >JavaScript

热点推荐