左右两个Frame,左面Left.aspx里面是一个菜单树,右边是工作区
电击Left的树节点,右侧工作区会跳转到相应的页面,并用QueryString得到左面的节点的ID
我的问题是需要右侧页面一直可以取到这个ID
比如右侧第一个界面是一个UserList.aspx列表页面,可以很方便的Query到ID
但是对列表的其中一个条目进行Edit等操作会跳另外一个页面比如EditUser.aspx这个页面就不好拿到ID了我先在总结下来的办法
1。增加HiddenField,在Edit页面取
这样比较麻烦
2。Session
也挺麻烦而且耗服务器资源。比1好些
3。Application
基本同2所以想请问一下大家有什么其他好办法

解决方案 »

  1.   

    我的左侧页面都是传一个MenuID给右侧的界面,右侧第一个页面肯定是GridView列表界面,MenuID主要是用来判断右侧的操作是否有权限的,比如GridView可以浏览,可以编辑删除等,所以右侧每个页面都比需要得到MenuID
      

  2.   

    URL传不太现实,很多GridView里面的按钮没法做MenuID进去
      

  3.   

    还有 cookie,cache 不行吗?
      

  4.   

    id为int
    写入:HttpContext.Current.Cache.Insert("RequestID",id);
    取出:id=(int)HttpContext.Current.Cache["RequestID"]
      

  5.   

    还有个恶心的问题,treeview没有onclick事件,有两个selectnodechange时间好像没有用
    我这个必须在server端指定MenuID到Session或者别的东西里面,请问这个如何解决?
      

  6.   

    还有个恶心的问题,treeview没有onclick事件,有两个selectnodechange事件好像没有什么用
    我需要在server site 指定MenuID到session等里面,不能在客户端,请问这个咋弄?
      

  7.   

    我的ID为GUID,可以转换成string,这个方法应该也可以吧?=下我时时
      

  8.   

    Cache是服务器缓存,公共的,不像Session和Cookie针对个人,所以还是别用,不然多人一起用会出现麻烦。
      

  9.   

    edit操作的时候,不能传这个id到EditUser.aspx?url传值?
      

  10.   

    在URL后传一个ID到编辑页面。。
    或用Session
      

  11.   

    用cache跟用session几乎没啥区别吧,用url传值感觉页面不好控制,是否可以设置全局变量
      

  12.   

    我这几天都用这个.
    跟你说的差不多.
    我也在做框架.
    多传个参数就可以了.
    重写URL啦.
      

  13.   


    ----------------------------------------
    最好的办法就是不要用 Iframe 
    而改用 UserControl 或 MasterPage这样就不存在说不好传值了.就如同操作本页一样简单.
    你要ID就直接可以得到.你为什么不用 UserControl / MasterPage ?
    这是多么好的东西
      

  14.   

    左边链接 不是带的URL么直接在URL上带参数
      

  15.   

    当选择节点时TreeView服务器控件同时触发SelectNodeChange和TreeNodeEcpand事件1、TreeView 服务器控件的事件
            TreeNodeCheckChange        当TreeView服务器控件的复选框在向服务器的两次发送过程之间有所更改时发生
            SelectedNodeChange           当选择TreeView服务器控件中的节点时发生
            TreeNodeExpanded             当展开TreeView服务器控件中的节点时发生
            TreeNodeCollapsed              当折叠TreeView服务器控件中的节点时发生
            TreeNodePoulate                 当其PopulateOnDemand属性设置为true的节点在TreeView服务器控件中展开时发生reeView
            TreeNOdeDataBound           当数据项绑定到TreeView服务器控件中的节点时发生
          2、节点的选择
             TreeView服务器控件的节点文字有两种模式:选择模式和导航模式,默认情况下,节点的文字处于选择模式
             SelectAction属性来指定单击TreeView服务器控件的节点时所触发的事件
             None                   当选择节点时不触发任何事件
             select                  当选择节点时TreeView服务器控件触发SelectNodeChange事件
             Expand               当选择节点时TreeView服务器控件触发TreeNodeExpanded事件
             selectExpand       当选择节点时TreeView服务器控件同时触发SelectNodeChange和TreeNodeEcpand事件            protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
        {
            Response.Write("你选择了" + TreeView1.SelectedNode.Text);
        }
        protected void TreeView1_TreeNodeCollapsed(object sender, TreeNodeEventArgs e)
        {
            Response.Write("你折叠了" + e.Node.Text);
        }
        protected void TreeView1_TreeNodeExpanded(object sender, TreeNodeEventArgs e)
        {
            if (IsPostBack)
            {
                Response.Write("你展开了" + e.Node.Text);
            }
        }
      

  16.   

    lz为什么希望使用全局变量呢?这样的问题使用全局变量并不会给你的程序带来太多的好处,因为你需要时时的管理和控制你的变量,特别是在你一开始进去和退出时,这个变量会对你的程序造成一定的影响。
    比较方便也是比较经济的做法就是在修改页面也加入一个URL参数,优点:逻辑简单,不会因为程序复杂度的增加,难以管理
      

  17.   

    恩,楼上说的也是我所希望的
    只不过我对ASPX这块不是很熟悉,我的界面MenuID是这样的传递的
    A-->B-->b1-->b2-->B
    A是左面的Left.aspx一个菜单树,
    B,b1,b2分别是右侧工作区的列表,编辑,察看等界面
    我的迷惑是B-->b1-->b2-->B这个过程的MenuID是如何来传递的?希望高手给支支招
      

  18.   

    B-->b1-->b2-->B
    不能用URL因为有些GRID的Edit,Delete等操作里面是没有办法加上这个ID的
      

  19.   

    不用URL用hidden field吗?好多页面,老复杂的
      

  20.   

    昏倒了TreeView OnClick事件无法触发?我点了节点怎么给Session负值?
    :<sessionState mode='StateServer' stateConnectionString='tcpip=127.0.0.1:42424' sqlConnectionString='data source=127.0.0.1;Trusted_Connection=yes' cookieless='true' timeout='180'/> 
    另外这个东西家在哪里?
      

  21.   

    以上代码..节点双击可以修改节点..呵呵..你改下.. node.Text = "<span style='cursor:hand' id='" + id + "' onclick=""SetNode('" + id + "','" + node.NavigateUrl + "','" + node.ValuePath + "')"" oncontextmenu=""SetNode('" + id + "','" + node.NavigateUrl + "','" + node.ValuePath + "') "">" + node.Text + "</span>" 
      

  22.   

    谢谢这位热心的朋友,不过我要的事server端的:)
      

  23.   

    直接Session吧,这点时间都做完了。
      

  24.   

    是的我现在就使用的Session
    不过我碰到的恶心问题时TreeView无法在node.OnClick事件里面给Session付值
    根本就没有OnCliCk事件,只有SelectedNodeChange两个事件,不知道MS那帮天才怎么想的,这个树做出来只是为了看么?
      

  25.   

    http://localhost/DcsWeb/Configuration/BasicInfoTables.aspx?tbName=BI_PositionType&pkName=IDKey&busPKName=PositionName&moduleID=Configuration.Position&VoucherID=vch_BI_
    http://localhost/DcsWeb/Configuration/BasicInfoTables_Edit.aspx?tbName=BI_PositionType&pkName=IDKey&busPKName=PositionName&moduleID=Configuration.Position&VoucherID=vch_BI_PositionType&pkValue=2fbcf15a-8b83-48c4-ac15-c8ee022ebd92
      

  26.   


    都说了穿URL不现实,这么简单的问题还用来这里问么
      

  27.   

    偶一般情况下用session,有时候结合传递参数的形式。期待高手……
      

  28.   

    我晕~这个...继续用URL传值...
    例如:
    <a href="UserList.aspx?id=1&page=1">Edit</a
    >
    我一般开发不用GIRDVIEW和他自己的按钮,用REPEATER或自己写都比较灵活,都用URL传。
      

  29.   

    我现在已经用Session做好了,但是我觉得这不是最好的方式,我还在尝试用别的办法。楼上有个说MasterPage的我觉得似乎有点意思。另外这个也是跟我架构设计有关系的,架构设计好的话,我想这些都可以继承下来的,不用这么麻烦。另外我的gridview都是跟ObjectDataSource绑定的,在继续URL传值是很简单的,但是工作量巨大,所以我不用这种方式。所以还是想看看有没有高手能有更灵活的办法。呵呵 谢谢大家的关注
      

  30.   

    XMLHTTP:
    http://blog.csdn.net/lfywy/archive/2008/06/11/2535885.aspx
      

  31.   

    1、可以用URL传值
    2、也可以用Cookie
    3、还可以单独定义一个记录ID的属性
      

  32.   

    这种情况我一般会选择用session
      

  33.   

    >>>但是对列表的其中一个条目进行Edit等操作会跳另外一个页面比如EditUser.aspx这个页面就不好拿到ID了是通过点击“结果列表每行都有的按钮”跳到另一个页面的吗?那你把ID什么的通过<%#Eval('ID')%>赋给按钮的CommandArgument
    然后,点击的时候,会有RowCommand事件,在事件处理里根据e.CommandArgument构造目的url,然后在Response.Redirect(url);或者,
    在RowDataBound事件处理中,给按钮增加onclick属性,在这里取ID值构造url,或url的一部分,然后在客户端用js控制跳转……