treeview 点击事件!!!!!

三哥123 2004-11-16 08:59:52
怎么样得到点击某节点时击发一个事件,
代码如下

private void InitTree(TreeNodeCollection Nds,string parentId)
{

//从根节点开始递归调用显示子树
string sql="select * from S_Menu";

DataSet ds=new DataSet();
ds=db.CreateDataSet(sql);

DataView dv=new DataView();
TreeNode tmpNd;
string intId;

dv.Table=ds.Tables["tree"];
dv.RowFilter="ParentId='" + parentId + "'" ;
foreach(DataRowView drv in dv)
{
tmpNd=new TreeNode();
tmpNd.ID=drv["NodeId"].ToString();
tmpNd.Text=drv["NodeName"].ToString();
tmpNd.NavigateUrl="tree2.aspx?id="+drv["Address"].ToString()+"";
Nds.Add(tmpNd);
intId=drv["ParentId"].ToString();
InitTree(tmpNd.Nodes,tmpNd.ID);
Label1.Text="";
}
}
...全文
515 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
三哥123 2004-11-16
  • 打赏
  • 举报
回复
czhenq(挨饿中……)
drKs[0].ToString()+" 这个是什么来的啊?
czhenq 2004-11-16
  • 打赏
  • 举报
回复
.CS文件:

TreeNode nodeF = new TreeNode();

nodeF.ID = drKs[0].ToString()+"\" onclick=\"javascript:node_click('"+drKs[0].ToString()+"');"; //关键就在加红的这段代码。

nodeF.Text = drKs[1].ToString();

t_TjXmWh.Nodes.Add(nodeF);

以上代码实际上是为每个节点添加onclick事件,将需要的信息作为参数传递给onclick事件处理函数。

客户端脚本:
<SCRIPT language=javascript>
<!--
function node_click(text)
{
window.parent.frm_right.location.replace("aTjXmWh_right.aspx?Parameters="+text);
}
//-->
</SCRIPT>
fxyfx 2004-11-16
  • 打赏
  • 举报
回复
刚才写错了!
你的事件就写在
private void TreeView1_SelectedIndexChange(object sender, Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs e)
{
}

然后写上
TreeNode node=new TreeNode();
node=TreeView1.GetNodeFromIndex(TreeView1.SelectedNodeIndex);
string sIndex;
sIndex = TreeView1.SelectedNodeIndex;
if (sIndex.IndexOf(".")>=0 )
{
sIndex = sIndex.Substring(0,sIndex.LastIndexOf("."));
}
InitTree(node,sIndex);
yyy431706 2004-11-16
  • 打赏
  • 举报
回复
我用的代码,你看看,直接用结点属性就可以了
Node.NavigateUrl

Node.Target


private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if (!this.Page.IsPostBack)
{
InitTree();
}
}
public void InitTree()
{
string SqlTree;
SqlTree="select * from Classes order by SetTop asc";
GetSubNodes((TreeNode)null,"0","",SqlTree,TreeView1);
}


public void GetSubNodes(TreeNode oNode,string iParentid,string NaviUrl,string SqlTree,TreeView TreeViewObj)
{
System.Data.SqlClient.SqlDataAdapter sda=new System.Data.SqlClient.SqlDataAdapter(SqlTree,conn);
ds =new DataSet();
sda.Fill(ds,"Classes");

dvTree= new DataView();
dvTree.Table = ds.Tables["Classes"];
dvTree.RowFilter="[Parent_ClassId]='"+iParentid+"'";
foreach(DataRowView Row in dvTree)
{
TreeNode Node = new TreeNode();
if (oNode==null)
{
//添加根结点
Node.Text=Row["Class_Name"].ToString();
Node.Expanded=true;
Node.Target="mainFrame";
Node.NavigateUrl=Row["NaviUrl"].ToString()+"?RootFlag="+Row["RootFlag"]+"&ActivePage=Tree&NodeId="+Row["ClassId"]+"&NodeText="+Row["Class_Name"]+"";
TreeViewObj.Nodes.Add(Node);
GetSubNodes(Node,Row["ClassId"].ToString(),NaviUrl,SqlTree,TreeViewObj); //再次递归

}
else
{
//添加结点的子结点
Node.Text=Row["Class_Name"].ToString();
//Node.id
Node.NodeData=Row["ClassId"].ToString();
if (NaviUrl=="")
{
if (Row["NaviUrl"].ToString()=="")
{

}
else
{
Node.NavigateUrl=Row["NaviUrl"].ToString()+"?RootFlag="+Row["RootFlag"]+"&ActivePage=Tree&NodeId="+Row["ClassId"]+"&NodeText="+Row["Class_Name"]+"";
Node.Target="mainFrame";
}
}
else
{
Node.NavigateUrl=NaviUrl+"?RootFlag="+Row["RootFlag"]+"&ActivePage=Tree&NodeId="+Row["ClassId"]+"&NodeText="+Row["Class_Name"]+"";
Node.Target="mainFrame";
}

oNode.Nodes.Add(Node);

GetSubNodes(Node,Row["ClassId"].ToString(),NaviUrl,SqlTree,TreeViewObj);//再次递归
}
}

}
三哥123 2004-11-16
  • 打赏
  • 举报
回复
fxyfx(fxy) ( ) 信誉:100

那我的事件写在那里啊?
fxyfx 2004-11-16
  • 打赏
  • 举报
回复
private void DataGrid1_SelectedIndexChanged(object sender, System.EventArgs e)
{
InitTree(TreeView1.GetNodeFromIndex(TreeView1.SelectedNodeIndex),
TreeView1.GetNodeFromIndex(TreeView1.SelectedNodeIndex).Parent);
}
tonybaobao 2004-11-16
  • 打赏
  • 举报
回复
这个事件我好象没有看到。
一般你可以把节点信息保存在XML里面,展开的时候自然会读取。
三哥123 2004-11-16
  • 打赏
  • 举报
回复
没人来看啊????????????????
三哥123 2004-11-16
  • 打赏
  • 举报
回复
????????????
whlinhai 2004-11-16
  • 打赏
  • 举报
回复
每个节点在选取时会有一个返回服务器的事件响应,但是如果该节点是刚选取的话,再次选取就不会返回服务器了,这样有点烦,因为我要它返回服务器后赋一个新的SESSION值传给接收页面。
simon8181 2004-11-16
  • 打赏
  • 举报
回复
我要得到 节点的ID :nodes.ID
噯卟釋手 2004-11-16
  • 打赏
  • 举报
回复
gz
三哥123 2004-11-16
  • 打赏
  • 举报
回复
我要得到 节点的ID 并激发另外一个按钮事件
yyy431706 2004-11-16
  • 打赏
  • 举报
回复
你需要点击节点时击发什么事件????

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧