请教高手,很奇怪,treeview 中参数传递的问题,高分求救各位大虾。

sunwww168 2004-10-19 11:48:36
请问动态建立treeview后,传递参数有几种方法,请给出详细代码,谢谢。
我是这样实现的,但存在一个很很奇怪的问题。
我动态的建立了一个treeview在框架中显示。我想当点击treeview中的一个节点时,就传一个参数到主框架页面。我用Session["bmlbid"]实现 ,但是当点击treeview节点时,treeview所在页面的Session["bmlbid"]值发生变化,而主框架页的Session["bmlbid"]不发生变化,当点击两次后才发生变化。请问为什么???
代码:treeview页面代码
private void Page_Load(object sender, System.EventArgs e)
{
pow=Convert.ToInt32(Session["power"]);
xwnew=new news1();
if (!IsPostBack)
{


/* addtree("0",null );*/
initree(TreeView1.Nodes ,"0");
TreeView1.Attributes.Add("ondblclick","TreeView1.getTreeNode(TreeView1.clickedNodeIndex).setAttribute('Expanded','True');");

}

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 );
// 在此处放置用户代码以初始化页面
}

private void TreeView1_SelectedIndexChange(object sender, Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs e)
{

Session["bmlbid"]=this.TreeView1.GetNodeFromIndex(this.TreeView1.SelectedNodeIndex).ID;

Label1.Text=Session["bmlbid"].ToString();


}



主框架页代码:
private void databind()
{
string xwlb="";

xwlb=Convert.ToString(Session["bmlbid"]);}
为什么会出现单击两次节点才能把 treeview 页面的Session["bmlbid"]传 过来。
...全文
103 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
luyuan6894 2004-10-19
  • 打赏
  • 举报
回复
你可以考虑用Node.NavigateUrl这个属性啊,不一定要启用回邮,这样会增加服务器的负担。
直接一个超链接导过去就完了,很简单的啊!当然Node.NavigateUrl="A.aspx?id=xxxx"后面的
参数在你生成树的时候要动态生成
sunwww168 2004-10-19
  • 打赏
  • 举报
回复
非常感谢 net_lover(孟子E章) ,能给个例子吗?谢谢。第一次有幸见到你。
sunwww168 2004-10-19
  • 打赏
  • 举报
回复
to xzq686(瞬) 我也不想用session.但还没有找到其它的方法。 我想传一个值到主框架页面,但不想跳转到主框架页。
孟子E章 2004-10-19
  • 打赏
  • 举报
回复
建议你用客户端的事件进行动态创建
,不用什么Session的即可

http://msdn.microsoft.com/workshop/webcontrols/webforms/library/shared/treenodesrc.asp
sunwww168 2004-10-19
  • 打赏
  • 举报
回复
to:swzlxm(守望者),谢谢,可能就是你说的那样。当第运行时第一次点击时Session可以正确传递。
点击第二次就不可以了。"转换页面在INDEXCHANGE_EVENT之前执行",那我怎么才能够把session先传过去,然后在转换页面呢?谢谢
xzq686 2004-10-19
  • 打赏
  • 举报
回复
"treeview所在页面的Session["bmlbid"]值发生变化,而主框架页的Session["bmlbid"]不发生变化,当点击两次后才发生变化。"
???不可能。。。
你最好在链接里传值。。。别用session了。太占内存。如果用户太多。一个用户会起一个session.
sunwww168 2004-10-19
  • 打赏
  • 举报
回复
自已顶一下,请大家多给你个方法,我也始终觉得TreeView1_SelectedIndexChange事件不太好,但我又不知道更好的办法,请指教。
swzlxm 2004-10-19
  • 打赏
  • 举报
回复
太多了,又乱,没太细看:

太概是这样第一次连接页面时并没有SESSION,转换页面在INDEXCHANGE_EVENT之前执行.

传值不是?AAA=??$BBB=??吗?为何不这样?
sunwww168 2004-10-19
  • 打赏
  • 举报
回复
谢谢各位,现我用Node.NavigateUrl="A.aspx?id=xxxx"动态传参数实现 ,但是我还是想知道在客服端来获取节点id然后传给主框架页面,

62,046

社区成员

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

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

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

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