试过用复合控件包含treeview控件,但是失败,这次在右键菜单调用tree的回发js成功可以在页面后台绑定被编辑的节点,后台3个函数都可以编辑用c#传的参数e.mynode就是右键菜单的选中的节点

using System;
using System.ComponentModel;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web;
using System.Text;
using System.Drawing.Design;
using System.IO;namespace ServerControl1
{[Serializable]public class TreeViewc : TreeView{public TreeViewc(){}[Bindable(true)][Category("搜索")][Description("资源(image/css/js)的客户端根目录")]public string ClientScriptPath{get{String s = (String)ViewState["ClientScriptPath"];return ((s == null) ? String.Empty : s);}set{ViewState["ClientScriptPath"] = value;}}protected override void RaisePostBackEvent(string eventArgument){base.RaisePostBackEvent(eventArgument);TreeNode tnNode = new TreeNode();//  base.RaisePostBackEvent(eventArgument);string sa = eventArgument.ToString();/*   for (int i = 0; i < this.Nodes.Count; i++)
            {                if (this.Nodes[i].Value == sa.Substring(sa.IndexOf('=')+1))
                {                    tnNode = this.Nodes[i];
                }            }*/string df = sa.Substring(sa.IndexOf('=') + 1).Replace("\\","/");tnNode = this.FindNode(df);// tnNode.ChildNodes.Clear();if (sa.StartsWith("copy")){Oncopynode(new nodeEventArgs(tnNode)); }if (sa.StartsWith("paste")){Onpastenode(new nodeEventArgs(tnNode));}if (sa.StartsWith("cut")){Oncutnode(new nodeEventArgs(tnNode));}if (sa.StartsWith("delete")){Ondeleteenode(new nodeEventArgs(tnNode));}}public event EventHandler copynode;protected virtual void Oncopynode(EventArgs e){if (copynode != null){copynode(this, e);//  Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), "", "<script language='javascript' >alert('dfsd');</script>");}}public event EventHandler pastenode;protected virtual void Onpastenode(EventArgs e){if (pastenode != null){pastenode(this, e);//    Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), "", "<script language='javascript' >alert('dfsd');</script>");}}public event EventHandler addnode;protected virtual void Onaddnode(EventArgs e){if (addnode != null){addnode(this, e);//    Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), "", "<script language='javascript' >alert('dfsd');</script>");}}public event EventHandler deleteenode;protected virtual void Ondeleteenode(EventArgs e){if (deleteenode != null){deleteenode(this, e);//   Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), "", "<script language='javascript' >alert('dfsd');</script>");}}public event EventHandler cutnode;protected virtual void Oncutnode(EventArgs e){if (cutnode != null){cutnode(this, e);//  Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), "", "<script language='javascript' >alert('dfsd');</script>");}}/* protected override void RenderContents(HtmlTextWriter output)
        {            output.Write("控件属性示例, 请从:设计器界面<=>代码视图界面 切换查看效果.");
        }*/protected override void Render(HtmlTextWriter output){base.Render(output);//  this.RenderControl(output);output.AddAttribute(HtmlTextWriterAttribute.Id, "myMenu");output.AddAttribute(HtmlTextWriterAttribute.Class, "contextMenu");output.RenderBeginTag(HtmlTextWriterTag.Ul);output.AddAttribute(HtmlTextWriterAttribute.Class, "copy");output.RenderBeginTag(HtmlTextWriterTag.Li);string href2 = Page.ClientScript.GetPostBackClientHyperlink(this, "this.svr").Replace("'this.svr'", "this.svr");output.AddAttribute(HtmlTextWriterAttribute.Href, href2);output.RenderBeginTag(HtmlTextWriterTag.A);// output.Write("<a href=javascript:PostBackFromClient_" + this.ClientID + "();>editos</a>");output.Write("复制");output.RenderEndTag();output.RenderEndTag();output.AddAttribute(HtmlTextWriterAttribute.Class, "cut");output.RenderBeginTag(HtmlTextWriterTag.Li);string href23 = Page.ClientScript.GetPostBackClientHyperlink(this, "this.svr").Replace("'this.svr'", "this.svr");output.AddAttribute(HtmlTextWriterAttribute.Href, href23);output.RenderBeginTag(HtmlTextWriterTag.A);// output.Write("<a href=javascript:PostBackFromClient_" + this.ClientID + "();>editos</a>");output.Write("剪切");output.RenderEndTag();output.RenderEndTag();output.AddAttribute(HtmlTextWriterAttribute.Class, "paste");output.RenderBeginTag(HtmlTextWriterTag.Li);string href233 = Page.ClientScript.GetPostBackClientHyperlink(this, "this.svr").Replace("'this.svr'", "this.svr");output.AddAttribute(HtmlTextWriterAttribute.Href, href233);output.RenderBeginTag(HtmlTextWriterTag.A);// output.Write("<a href=javascript:PostBackFromClient_" + this.ClientID + "();>editos</a>");output.Write("粘贴");output.RenderEndTag();output.RenderEndTag();output.AddAttribute(HtmlTextWriterAttribute.Class, "delete");output.RenderBeginTag(HtmlTextWriterTag.Li);string href = Page.ClientScript.GetPostBackClientHyperlink(this, "this.svr").Replace("'this.svr'", "this.svr");output.AddAttribute(HtmlTextWriterAttribute.Href, href);output.RenderBeginTag(HtmlTextWriterTag.A);// output.Write("<a href=javascript:PostBackFromClient_" + this.ClientID + "();>editos</a>");output.Write("删除");output.RenderEndTag();output.RenderEndTag();output.AddAttribute(HtmlTextWriterAttribute.Class, "quit");output.RenderBeginTag(HtmlTextWriterTag.Li);//  string href3 ="javascript: $('myMenu').hide()";//  output.AddAttribute(HtmlTextWriterAttribute.Href, href3);//   output.RenderBeginTag(HtmlTextWriterTag.A);output.Write("<a href=\"javascript:a()\">取消</a>");//  output.Write("新建");//  output.RenderEndTag();output.RenderEndTag();output.RenderEndTag();/*           output.Write("控件属性示例, 请从:设计器界面<=>代码视图界面 切换查看效果.");*/}protected override void OnPreRender(EventArgs e){string strJSPath = base.ResolveUrl(Path.Combine(this.ClientScriptPath, @"treejb.js"));if (!Page.ClientScript.IsClientScriptBlockRegistered(this.GetType(), "treejb")){Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "treejb","<script type='text/javascript' src='" + strJSPath + "'></script>", false);}base.OnPreRender(e);}}}
public static TreeNode StaTreeNode = new TreeNode();
protected void Treecnt1_TextChanged1(object sender, EventArgs e){this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "Prompt","<script language='javascript' >alert('oe');</script>");}protected void TreeViewc1_copynode(object sender, EventArgs e){StaTreeNode = new TreeNode((e as nodeEventArgs).MyNode.Text,(e as nodeEventArgs).MyNode.Value);//  StaTreeNode.ChildNodes.Clear();// ViewState["tno"] = (e as nodeEventArgs).MyNode;string s = (e as nodeEventArgs).MyNode.Value.ToString();string b = s;/*  this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "Prompt",
              "<script language='javascript' >alert('"+b+"');</script>");*/}protected void TreeViewc1_SelectedNodeChanged(object sender, EventArgs e){TreeView n = sender as TreeView;string sd = n.Nodes.Count.ToString();//  int a = 0;}protected void TreeViewc1_pastenode(object sender, EventArgs e){TreeNode tyh=  (e as nodeEventArgs).MyNode;tyh.ChildNodes.Add(StaTreeNode);string s = (e as nodeEventArgs).MyNode.Value.ToString();string b = s;/* this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "Prompt",
              "<script language='javascript' >alert('" + b + "');</script>");*/}protected void TreeViewc1_cutnode(object sender, EventArgs e){StaTreeNode = (e as nodeEventArgs).MyNode;StaTreeNode.Parent.ChildNodes.Remove(StaTreeNode);}protected void TreeViewc1_deleteenode(object sender, EventArgs e){(e as nodeEventArgs).MyNode.Parent.ChildNodes.Remove((e as nodeEventArgs).MyNode);}// int a = 0;
var svr;
function a() {/* alert(ev.pageX);alert('aa')*/$("#myMenu").css({"display": "none"})
}$(document).ready(function() {//  alert($("#myMenu"))var f = $("#TreeViewc1").find("a");//  alert(m.length);//    var f = m.filter("a");//  alert(f.length);for (var i = 0; i < f.length; i++) {// alert(f[i].id)f[i].oncontextmenu = function(ev) {// alert(ev.pageX);//  svr = ev.currentTarget.innerHTML;svr = ev.currentTarget.href;//  alert(svr);/* $("#myMenu").style.display = "block";$("#myMenu").style.left = ev.pageX;$("#myMenu").style.top = ev.pageY;*/$("#myMenu").css({"display": "block","left": ev.pageX,"top":ev.pageY})$(".copy").children("a").attr("href", svr.replace(",'s", ",'copy="));$(".cut").children("a").attr("href", svr.replace(",'s", ",'cut="));$(".paste").children("a").attr("href", svr.replace(",'s", ",'paste="));$(".delete").children("a").attr("href", svr.replace(",'s", ",'delete="));return false;}}});
/* Generic context menu styles */
.contextMenu {position: absolute;width: 120px;z-index: 99999;border: solid 1px #CCC;background: #EEE;padding: 0px;margin: 0px;display: none;
}.contextMenu LI {list-style: none;padding: 0px;margin: 0px;
}.contextMenu A {color: #333;text-decoration: none;display: block;line-height: 20px;height: 20px;background-position: 6px center;background-repeat: no-repeat;outline: none;padding: 1px 5px;padding-left: 28px;
}.contextMenu LI.hover A {color: #FFF;background-color: #3399FF;
}.contextMenu LI.disabled A {color: #AAA;cursor: default;
}.contextMenu LI.hover.disabled A {background-color: transparent;
}.contextMenu LI.separator {border-top: solid 1px #CCC;
}/*Adding IconsYou can add icons to the context menu by addingclasses to the respective LI element(s)
*/.contextMenu LI.edit A { background-image: url(images/page_white_edit.png); }
.contextMenu LI.cut A { background-image: url(images/cut.png); }
.contextMenu LI.copy A { background-image: url(images/page_white_copy.png); }
.contextMenu LI.paste A { background-image: url(images/page_white_paste.png); }
.contextMenu LI.delete A { background-image: url(images/page_white_delete.png); }
.contextMenu LI.quit A { background-image: url(images/door.png); }

自定义treeview控件,实现右键菜单编辑功能相关推荐

  1. fineui grid ajax,基于FineUI Grid控件添加右键菜单

    FineUI官方Demo上一直没有Grid右键菜单的实现,其实从4.1.x的版本开始,允许添加自定义的事件监听(Listeners),所以要实现这个功能已经相当容易了. ExtJs右键菜单有很多种,对 ...

  2. Duilib中为RichEdit\Edit控件添加自定义右键菜单

    前言 Duilib中的RichEdit控件在使用中发现,基本上对复制.粘贴.剪切等快捷方式都是支持的,不过唯一缺点是没有右键菜单,感觉不够好,于是就想着加上右键菜单. 右键菜单基本思路是,在RichE ...

  3. C#页面编程:ContextMenuStrip控件【右键菜单栏选项功能实现】

    ContextMenuStrip控件 一级目录 应用场景 页面显示 按钮命名(自定义) 功能实现(双击进入槽函数) 页面显示(附着于某处,以Form1为例子) 代码呈现 一级目录 应用场景 对部分图片 ...

  4. [QT_015]Qt学习之基于条目控件的自定义特性(拖拽+右键菜单+样式)

    本文转自:<Qt编程指南>        作者:奇先生 Qt编程指南,Qt新手教程,Qt Programming Guide 本节介绍基于条目控件的定制特性,首先介绍条目的拖拽,列表控件. ...

  5. 怎样在Delphi中屏蔽Flash控件的右键弹出菜单

    关于如何屏蔽Flash控件的右键菜单的问题有很多人问过,也有很多人回答,基本上都是说拦截 Application消息,或者继承一个新的控件,重载MouseDown消息,第一种解决办法,好象是简单 些, ...

  6. matlab treeview,treeview控件

    高分在线等:C#中如何给treeview控件上的节点前添比如有一treeview1控件,需要在其所有节点前均加一静态小图标(所有节点我也新手,正好刚用过这功能.如下: 1. 到工具箱中拖一个image ...

  7. Winform UI界面设计例程——TreeView控件

    今天我们来探讨下treeView的使用 treeView控件是树形菜单,非常易于展示层次结构和对其进行导航,我们电脑的资源管理器就是使用了treeView控件进行目录和磁盘的导航. TreeView控 ...

  8. C# TreeView 控件的综合使用方法

    1.概述 该篇文章开发使用的语言c#,环境visualstudio2010,sql数据库.主要内容包括: (1).treeView控件添加根节点.子节点的基本方法,节点的删除. (2).把treeVi ...

  9. SilverLight:基础控件使用(5)-TreeView控件-基本使用

    ylbtech-SilverLight-Basic-Control:基础控件使用(5)-TreeView控件-基本使用 前台编辑 后台逐个添加 后台绑定数据源 1.A,返回顶部TreeView控件(树 ...

最新文章

  1. tensorflow随笔-tensorflow版本号
  2. python字典计数_Python下封装个好用计数字典包
  3. android 栏目编辑,android – 编辑文本导致内存泄漏
  4. LeetCode 453. Minimum Moves to Equal Array Elements
  5. HBase 数据模型(Data Model)
  6. paip.重装系统后firefox火狐收藏夹的恢复
  7. 【android自定义控件】自定义Toast,AlterDialog,Notification 四
  8. Libgdx之Table 表格排版
  9. 台式计算机运行慢怎么样能提高速度,如何提高电脑的运行速度,让电脑快起来!...
  10. 计算机专业实践报告立题依据,开题报告立题依据 .doc
  11. 日日日日日日日日日日
  12. ZOJ 3199 Longest Repeated Substring
  13. 蓝牙遥控器连接流程分析
  14. 01-在线教育行业介绍
  15. 检索匹配的利器:正则表达式
  16. mysql odbc c语言_C语言ODBC操作MySQL数据库(示例代码)
  17. 50个最好的firefox扩展让你尽情冲浪
  18. rm: cannot remove `/usr/local/tmp/‘: Directory not empty
  19. 巅峰产生虚伪拥护,黄昏见证忠诚信徒
  20. matlab上机题库,matlab上机模拟试题

热门文章

  1. 关于4次挥手时等待2MSL的问题
  2. 51单片机:LED流水灯(仿真+代码)
  3. php实用教程第3版郑阿奇课后答案_PHP实用教程(第3版)
  4. 苹果手机QQ扫正常二维码404
  5. Innodb解决幻读
  6. 每日计划(2)——大二
  7. 资产负债表与利润表钩稽关系
  8. 前端学习日志-4-js
  9. 简单c语语言游戏教案大全,大班语言活动教案大全简单趣味
  10. redis 十一. IO 多路复用