.Net Framework3.5 TreeView控件同时实现超链接和选择事件效果

在 menu 和 treeview 中,如果为 NavigateUrl  赋了值,则执行时先执行 NavigateUrl ,而 Menu_MenuItemClick 和 TreeView1_SelectedNodeChanged 不会触发;若要触发 Menu_MenuItemClick 和 TreeView1_SelectedNodeChanged,则必须放弃对 NavigateUrl  属性的使用,注意:将 NavigateUrl  设置为空置也不行,必须设置Node.SelectAction = TreeNodeSelectAction.None.

但是如何同时实现Node的点击和超链接效果呢?仍然设置Node. NavigateUrl = “xxxxx.aspx”实现超链接效果。困难在于寻找SelectedNodeChanged事件失效的替代方案。基本思路:利用JavaScript设置NodeOnClick事件SetNodeClick(),在事件中把需要的参数对隐藏控件进行赋值并激活服务器端Button控件,使服务器相应Button的点击事件并处理。

1..aspx页面根据需要添加服务端TextBox控件用于接收需要的参数。添加一个服务器端Button控件并添加Button_OnClick()事件进行处理。

        <div style="display: none;">

        <asp:ScriptManager runat="server" ID="ScriptManager1">

        </asp:ScriptManager>

        <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">

            <ContentTemplate>

                <asp:TextBox ID="txtProgId" runat="server"></asp:TextBox>

                <asp:TextBox ID="txtProgName" runat="server"></asp:TextBox>

                <asp:Button ID="btnSetMenuModel" runat="server" Text="设置菜单模组" OnClick="btnSetMenuModel_Click" />

            </ContentTemplate>

        </asp:UpdatePanel>

    </div>

     技巧:把Button放在UpdatePanel中实现局部刷新避免了这个树因为回发引起的闪动

 

2.设置Node属性

 

 node.NavigateUrl = drv["url"].ToString();//指定节点的超链接

 node.Target = "MainFrame";//指定链接的显示位置

 //设置Node的客户端点击事件

 

 node.Text = "<span οnclick=SetNodeClick ('" + drv["progid"].ToString() + "','" + drv["progname"].ToString() + "')>" + drv["progname"].ToString() + "</span>";

 

3.对隐藏TextBox控件进行赋值并激发ButtonClick事件

  <script type="text/javascript" language="javascript">

    function SetNodeClick(progid,progname)

    {

        document.getElementById("txtProgId").value = progid;

        document.getElementById("txtProgName").value = progname;

        document.getElementById("btnSetMenuModel").click();

     return false;

    }

  </script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值