急切的问关于treeview节点提交的问题,大家帮忙啊,高分求救!!!
我现在想实现
1.treeview的所有node选择都要提交,但按旁边的+,-号展开树但不提交
2.只是选择treeview的最末级node才提交,选择其它node或+,-不提交
请问这两种该怎么实现
在http://dev.csdn.net/develop/article/22/22100.shtm
我看到的可能是第二种,可使用c#写的,试了也不成功,可有vb的代码
这是我以前关于这个问题的帖子
http://community.csdn.net/Expert/topic/3300/3300870.xml?temp=.7851679
谢谢大家,我真的很急
问题点数:0、回复次数:7Top
1 楼morality(业精于勤,行成于思!)回复于 2004-09-03 13:57:03 得分 0
9.展开时不提交,改变选择节点时才提交
将autopostback设置成false;
在body里添加 <body onload="initTree()">
然后在PageLoad里写:
string strTreeName = "TreeView1";
string strRef = Page.GetPostBackEventReference(TreeView1);
string strScript = "<script language=\"JavaScript\"> \n" + "<!-- \n" + " function initTree() { \n" +" " + strTreeName + ".onSelectedIndexChange = function() { \n" + "if (event.oldTreeNodeIndex !=
event.newTreeNodeIndex) \n" + "this.queueEvent('onselectedindexchange', event.oldTreeNodeIndex + ',' + event.newTreeNodeIndex); \n" + "window.setTimeout('" + strRef.Replace("'","\\'") + "', 0, 'JavaScript'); \n" + " } \n" + " } \n" + "// --> \n" + "</script>";
Page.RegisterClientScriptBlock("InitTree",strScript );
这样就只有你点击的节点更改的时候才提交!
Top
2 楼morality(业精于勤,行成于思!)回复于 2004-09-03 13:57:30 得分 0
http://dev.csdn.net/develop/article/22/22100.shtmTop
3 楼morality(业精于勤,行成于思!)回复于 2004-09-03 14:00:36 得分 0
TreeView展开无闪烁的解决方法(VB版,只是将江雨的代码翻成VB的)
'实现TreeView展开不提交,点击才提交
'------------------------------------------------------
Dim strTreeName As String = "TreeView1"
Dim strRef As String = Page.GetPostBackEventReference(TreeView1)
Dim strScript As String = "<script language='JavaScript'> " & vbCrLf _
& "<!-- " & vbCrLf _
& " function initTree() { " & vbCrLf _
& " " & strTreeName & ".onSelectedIndexChange = function() { " & vbCrLf _
& " if (event.oldTreeNodeIndex != event.newTreeNodeIndex) " & vbCrLf _
& " this.queueEvent('onselectedindexchange', event.oldTreeNodeIndex + ',' + event.newTreeNodeIndex); " & vbCrLf _
& " window.setTimeout('" & strRef.Replace("'", "\'") & "', 0, 'JavaScript'); " & vbCrLf _
& " } " & vbCrLf _
& " } " & vbCrLf _
& "// --> " & vbCrLf _
& "</script>"
Page.RegisterClientScriptBlock("InitTree", strScript)
'-------------------------------------------------------
Top
4 楼wildboat()回复于 2004-09-03 14:11:57 得分 0
谢谢,第一种实现了
那
2.只是选择treeview的最末级node才提交,选择其它node或+,-不提交
请问这两种该怎么实现Top
5 楼morality(业精于勤,行成于思!)回复于 2004-09-03 14:30:51 得分 0
把上面的代码中的 if 条件中的判断稍微改改,改为下面的再试试:
....
if (treeview1.getTreeNode( event.newTreeNodeIndex)).getChildren().length == 0)
....Top
6 楼pgwron(情伤无痕)回复于 2004-09-03 15:12:21 得分 0
心情很不好,没分也顶Top
7 楼yzb7811(秋寒)回复于 2004-09-03 15:52:08 得分 0
给你代码
在page.load中调用DealTree,.aspx文件中的body改为:<body onload="initTree()" MS_POSITIONING="GridLayout">设置treeview控件的autopostback=false
Private Sub DealTree()
Dim strTreeName As String = "trvMod"
Dim strRef As String = Page.GetPostBackEventReference(trvMod)
Dim strScript As String = "<script language='JavaScript'> " + vbCrLf _
+ "<!-- " + vbCrLf _
+ " function initTree() { " + vbCrLf _
+ " " + strTreeName + ".onSelectedIndexChange = function() { " + vbCrLf _
+ " var mynode=trvMod.getTreeNode(trvMod.clickedNodeIndex);" + vbCrLf _
+ " var childNodes=new Array();" + vbCrLf _
+ " childNodes=mynode.getChildren();" + vbCrLf _
+ " if ((event.oldTreeNodeIndex != event.newTreeNodeIndex)&&(childNodes.length == 0)) {" + vbCrLf _
+ " this.queueEvent('onselectedindexchange', event.oldTreeNodeIndex + ',' + event.newTreeNodeIndex); " + vbCrLf _
+ " window.setTimeout('" & strRef.Replace("'", "\'") + "', 0, 'JavaScript'); " + vbCrLf _
+ " } " + vbCrLf _
+ " } " + vbCrLf _
+ " } " + vbCrLf _
+ "// --> " & vbCrLf _
+ "</script>"
Page.RegisterClientScriptBlock("InitTree", strScript)
End Sub
Top




