Treeview动态添加用户控件 取值和传值

Treeview动态添加用户控件 取值和传值

今天做了很好玩的树,是treeview与用户控件之间进行交互先看效果:

Treeview动态添加用户控件 取值和传值

主要功能:勾选子节点的checkbox,右边会动态加载该节点的信息,出现TextBox让用户填写节点的值,点击保存按钮将文本框的值保存到对应的节点。

里面涉及到了asp执行ascx页面里的事件,并取值。

这是前台的代码:CustomXMLmanager2.aspx

Treeview动态添加用户控件 取值和传值
Treeview动态添加用户控件 取值和传值
View Code

 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CustomXMLmanager2.aspx.cs" Inherits="usexml.CustomXMLmanager2" %>
2
3 <%@ Register src="Custom2.ascx" tagname="Custom2" tagprefix="uc1" %>
4
5 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
6
7 <html xmlns="http://www.w3.org/1999/xhtml">
8 <head runat="server">
9 <title></title>
10 </head>
11 <body>
12
13 <script language="javascript" type="text/javascript">
14
15 // 点击复选框时触发事件
16
17 function postBackByObject() {
18
19 var o = window.event.srcElement;
20
21 if (o.tagName == "INPUT" && o.type == "checkbox") {
22
23 __doPostBack("", "");
24
25 }
26
27 }
28
29 </script>
30 <form id="form1" runat="server">
31 <div>
32 <asp:ScriptManager ID="ScriptManager1" runat="server">
33 </asp:ScriptManager>
34 <asp:UpdatePanel ID="UpdatePanel1" runat="server">
35 <ContentTemplate>
36 <table width="100%" style="border: 2px dotted #008080"><tr><td width="30%">
37
38
39 <asp:TreeView ID="TreeView1" runat="server" ImageSet="Simple" ShowCheckBoxes="Leaf"
40 ShowLines="True"
41 ViewStateMode="Enabled">
42 <HoverNodeStyle Font-Underline="True" ForeColor="#5555DD" />
43 <Nodes>
44 <asp:TreeNode Text="个人信息" Value="海洋信息数据集">
45 <asp:TreeNode Text="名字" Value="数据名称"></asp:TreeNode>
46 <asp:TreeNode Text="性别" Value="数据格式"></asp:TreeNode>
47 <asp:TreeNode Text="年龄" Value="数据摘要"></asp:TreeNode>
48 <asp:TreeNode Text="帅不帅" Value="帅不帅"></asp:TreeNode>
49 <asp:TreeNode Text="漂不漂亮" Value="漂不漂亮"></asp:TreeNode>
50 </asp:TreeNode>
51 </Nodes>
52 <NodeStyle Font-Names="Tahoma" Font-Size="10pt" ForeColor="Black"
53 HorizontalPadding="0px" NodeSpacing="0px" VerticalPadding="0px" />
54 <ParentNodeStyle Font-Bold="False" />
55 <SelectedNodeStyle Font-Underline="True" ForeColor="#5555DD"
56 HorizontalPadding="0px" VerticalPadding="0px" />
57 </asp:TreeView>
58
59
60
61
62
63 </td>
64 <td style="background-color: #008080; width: 2px"></td>
65 <td>
66
67
68
69
70
71
72
73 <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
74
75
76
77
78
79
80 </td>
81
82 </tr></table>
83 <div>
84
85 </div>
86 </ContentTemplate>
87 </asp:UpdatePanel>
88
89 </div>
90 <div align="center"><asp:Button ID="Button1" runat="server" Text="保存"
91 οnclick="Button1_Click" /></div>
92 </form>
93 </body>
94 </html>

这是后台代码:CustomXMLmanager2.aspx.cs

Treeview动态添加用户控件 取值和传值
Treeview动态添加用户控件 取值和传值
View Code

  1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Web;
5 using System.Web.UI;
6 using System.Web.UI.WebControls;
7 using System.Reflection;
8
9 namespace usexml
10 {
11 public partial class CustomXMLmanager2 : System.Web.UI.Page
12 {
13 protected void Page_Load(object sender, EventArgs e)
14 {
15
16 if (IsPostBack)
17 {
18
19
20 //if (ViewState["node"] != null)
21 //{
22 // nodes1();
23
24 //}
25
26 nodes1();
27
28
29 }
30
31
32
33
34
35
36
37 TreeView1.Attributes.Add("onclick", "postBackByObject()");
38
39 }
40
41
42 private void nodes1()
43 {
44 int tg = 0;
45 foreach (TreeNode nod in TreeView1.CheckedNodes)
46 {
47
48 nod.Target = tg.ToString();
49 Custom2 uc = (Custom2)LoadControl("Custom2.ascx");
50 uc.Nodname = nod.Text;
51 uc.Nodvalue = nod.Value;
52
53 uc.Nodetag = nod.Target;
54
55 PlaceHolder1.Controls.Add(uc);
56
57 tg++;
58
59 }
60
61
62 }
63
64
65 protected void Button1_Click(object sender, EventArgs e)
66 {
67 for (int i = 0; i < PlaceHolder1.Controls.Count; i++)
68 {
69 UserControl uc2 = (UserControl)PlaceHolder1.Controls[i];
70
71 Type ucType = uc2.GetType();
72
73 //用MethodInfo类来获取用户控件中的方法.
74
75 MethodInfo UcMethod = ucType.GetMethod("GetText");// Button1_Click控件中的方法。
76
77 //在此处页面的方法中执行用户控件中的方法.
78
79 object[] argumentArrray = new object[0];
80
81 UcMethod.Invoke(uc2, new object[0]);//调用用户控件中的方法。此处执行了!!。
82
83 foreach (TreeNode nod in TreeView1.CheckedNodes)
84 {
85
86
87 PropertyInfo UctextName = ucType.GetProperty("PicName");
88 PropertyInfo tag = ucType.GetProperty("Nodetag");
89 if (nod.Target == tag.GetValue(uc2, null).ToString())
90 {
91
92 nod.Value = UctextName.GetValue(uc2, null).ToString();//获取了上传的文件名信息。并显示在 page 页面上。
93
94 }
95
96
97 }
98
99
100 }
101
102 }
103
104 }
105 }

这是用户控件的前台:Custom2.ascx

Treeview动态添加用户控件 取值和传值
Treeview动态添加用户控件 取值和传值
View Code

1 <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Custom2.ascx.cs" Inherits="usexml.Custom2" %>
2 <div>
3 <asp:Label ID="Label1" runat="server" Text="Label" ForeColor="#006666"></asp:Label>
4 <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
5 当前节点的值:<asp:Label ID="Label2" runat="server" Text="Label" ForeColor="#003366"></asp:Label>
6
7 </div>

这是用户控件的后台:Custom2.ascx.cs

Treeview动态添加用户控件 取值和传值
Treeview动态添加用户控件 取值和传值
View Code

  1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Web;
5 using System.Web.UI;
6 using System.Web.UI.WebControls;
7
8 namespace usexml
9 {
10 public partial class Custom2 : System.Web.UI.UserControl
11 {
12
13
14 private string nodname = "";
15 public string nodvalue = "";
16 private string nodtag = "";
17 private string picname = "";
18 public string Nodname
19 {
20
21
22 get
23 {
24
25 return nodname;
26
27 }
28
29 set
30 {
31
32
33 nodname = value;
34
35 }
36
37
38 }
39
40 public string Nodvalue
41 {
42
43
44 get
45 {
46
47 return nodvalue;
48
49 }
50
51 set
52 {
53
54
55 nodvalue = value;
56
57 }
58
59
60 }
61
62 public string Nodetag
63 {
64
65
66 get
67 {
68
69 return nodtag;
70
71 }
72
73 set
74 {
75
76
77 nodtag = value;
78
79 }
80
81
82 }
83
84 public string PicName
85 {
86
87 get { return picname; }
88
89 set { picname = value; }
90
91 }
92
93 protected void Page_Load(object sender, EventArgs e)
94 {
95 Label1.Text = nodname+"";
96
97 Label2.Text = nodvalue;
98
99
100 }
101
102 public void GetText()
103 {
104
105
106 picname = TextBox1.Text;
107 TextBox1.Text = "";
108 Label2.Text = picname;
109
110
111
112 }
113
114
115 }
116 }

主要功能已实现,下一步我要将其结合到XML去,实现对XML文档的自定义扩展。

转载于:https://www.cnblogs.com/panan/archive/2011/12/28/2304854.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/110496.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Idea插件安装和管理「建议收藏」

    Idea插件安装和管理「建议收藏」1.打开插件视图点击File-&gt;Settings菜单,或Ctrl+Alt+S快捷键.打开设置面板.并切换到Plugins插件视图2.插件的管理和卸载当前idea中安装的所有插件(包括系统本身的和用户自己的)都会展示在列表中,右边的复选框表示当前插件的启用状态.在最右边的面板中显示了插件的具体信息和卸载按钮.当不需要插件时,…

  • centos7系统更新命令_centos 更新

    centos7系统更新命令_centos 更新1.查看网络IP ifconfig2.下载命令 wget+网址3.安装 yum-y install + 目标4.删除文件 sudo rm 文件所在目录/目标强制删除文件 rm -f删除目录 rm -rf5.复制一个文件到另一个文件夹sudo cp /文件夹/文件 /另一个文件夹6.对一些文件进行读写sudo vim 文件名7….

  • commandname「建议收藏」

    commandname「建议收藏」你怎么还是采用asp的方式来实现呢?  既然用了datagrid再后面加一个然后为你的DataGrid添加  ItemCommand事件(this.MyList.ItemCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.MyList_ItemCommand))  在这个事

    2022年10月22日
  • AGI:走向通用人工智能的【生命学&哲学&科学】第一篇——生命、意识、五行、易经、量子

    AGI:走向通用人工智能的【生命学&哲学&科学】第一篇——生命、意识、五行、易经、量子AGI:走向通用人工智能的【生命学&哲学&科学】第一篇——生命、意识、五行、易经、量子经典的物理统一在原子上,量子的物理统一在量子上,化学统一在元素上,而生命统一在DNA上,DNA本身拆干了,其实就是一群元素,按照经典物理和量子物理所进行的组合。科学本质上是一种经验主义的认识论,属于哲学的一个分支。量子理论,要通过哲学语言,量子属于形而上看不到、摸不着的东西。元气的基本五行,是世界万物的行成与演变的方式。生命的本质是化学,化学的本质是物理,物理的本质用数学描述,数学的本质是由我们的某种语言写出

  • js ajax 跨域问题 解决方案[通俗易懂]

    js ajax 跨域问题 解决方案[通俗易懂]什么是跨域问题?跨域问题来源于JavaScript的”同源策略”,即只有协议+主机名+端口号(如存在)相同,则允许相互访问。也就是说JavaScript只能访问和操作自己域下的资源,不能访问和操作其他域下的资源。跨域问题是针对JS和ajax的,html本身没有跨域问题。查看浏览器开发者工具Console报错:Failedtoloadhttp://a.a.com:8080/A/FromServlet?userName=123:No’Access-Control-Allow-Origi.

  • Windows Azure AppFabric应用程序

    Windows Azure AppFabric应用程序WindowsAzureAppFabric团队在大步前进。在上个月发布服务总线队列和Topics到CTP之后,这个团队刚刚发布AppFabric应用程序到CTP。AppFabric应用程序简化了将服务组成一个应用程序的任务,但实际上,它似乎重写了平台作为服务的意义(PaaS)

    2022年10月16日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号