【自然框架】之鼠标点功能现(二):表单控件的“应用”—— 代码?只写需要的!
【自然框架】之鼠标点功能现(一):单表的增删改查(即上次5月23日活动的一个主题)【Demo、源码下载】
看了大家的回复,好像不少人误会了,我为了突出“鼠标点,功能现”,所以没有说代码,没有贴代码,这就让一些人认为我想要完全抛弃VS,自己写一个“平台”来代替,不好意思,您高估我了,我可达不到。我只是想“简单的事情点鼠标就可以了,复杂的事情就要写代码了”。
还是举例子吧。比如说上次里的【表8:添加列表信息】、【表9:功能按钮】(添加按钮)、【表12:修改查询条件】、【表13:调整表单布局】 、【表15:修改字段配置信息】、【表16:新闻管理】这几个图里面的表单页面,其实都是DataForm.aspx页面,就是说他们使用的是同一个页面。
【表8:添加列表信息】
说到这里您可能会想,这个页面得多复杂呀,是不是要写n多代码呀?其实很简单。贴个代码:
.aspx页面
1 <%@ Page validateRequest="false" Language="C#" AutoEventWireup="true" CodeBehind="DataForm1.aspx.cs" Inherits="Nature.Manage.DataForm1" %>
2
3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
5 <html xmlns="http://www.w3.org/1999/xhtml" >
6 <head runat="server">
7 <title><%=this.Lbl_Title.Text %></title>
8 <%=CssWeb%>
9 <script language="javascript" type="text/javascript" src="/public/js/myreturn.js"></script>
10 <script language="javascript" type="text/javascript" src="/public/js/check.js"></script>
11
12 <script language="javascript" type="text/javascript">
13 var fid = "";
14
15 fid = "<%=ForeignID%>";
16 function myCheck()
17 {
18 return CheckForm();
19 }
20
21 function myLoad()
22 {
23 if (myTxtID)
24 if (document.getElementById(myTxtID))
25 document.getElementById(myTxtID).focus();
26
27
28 }
29
30 </script>
31 </head>
32 <body>
33 <form id="form1" runat="server">
34 <div style="width:100%; font-size:12pt; text-align: center;vertical-align:middle;">
35 <asp:Label ID="Lbl_Title" runat="server" style="font-size:14pt; "></asp:Label>
36 </div>
37 <div style="width:100%; text-align: center;vertical-align:middle;">
38 <Nature:MyForm ID="myForm" runat="server" onformbinded="myForm_FormBinded" />
39 <asp:Button ID="Btn_Save" runat="server" Text=" 保 存 " />
40
41 </div>
42 </form>
43 </body>
44 </html>
45
一共就这么几行,主要是拽进来一个表单控件。
再看.aspx.cs页面。
1 using Nature;
2 using Nature.Data;
3 using Nature.Common;
4 using Nature.WebControls;
5
6
7 namespace Nature.Manage
8 {
9 /// <summary>
10 /// 通用表单页面
11 /// </summary>
12 public partial class DataForm1 : CommonClass.BasePageForm
13 {
14 protected void Page_Load(object sender, EventArgs e)
15 {
16
17 }
18
19 #region 保存记录,可以使添加,也可以是修改
20 protected override void Btn_Save_Click(object sender, EventArgs e)
21 {
22 this.myForm.SaveData();
23 Functions.PageRegisterJavascript(Page, "myReturn()");
24 }
25 #endregion
26
27 #region 表单控件绑定后触发的事件
28 protected void myForm_FormBinded(object sender, EventArgs e)
29 {
30
31 //获取表里面的外键字段
32
33 string ForeignColumnID = dal.ExecuteString("select ForeignColumnID from Manage_Function_Info where FunctionID = " + this.FunctionID);
34 if (ForeignColumnID != null)
35 {
36 //查找外键对应的控件
37 MyTextBox txt = (MyTextBox)myForm.FindControl("c_" + ForeignColumnID);
38 if (txt != null)
39 txt.Text = base.ForeignID;
40 }
41
42 }
43 #endregion
44
45 }
46 }
还是这么几行,一点都不复杂,这个页面就是应对简单的添加、修改用的,简单的没有特殊需求的都可以用这个页面,但是如果遇到复杂的情况,那就要在单独写一个页面了,比如前面的【表6:添加节点】,要添加一个子节点,就要对几个字段进行计算,用这个页面就不适合了,但是我不会为了让DataForm.aspx能够添加节点,而去修改这个页面,而是在单独做一个页面 —— NoteMod.aspx 在这个页面里实现添加节点的功能。对了,添加节点有特殊的地方,但是修改节点就没有什么特殊的了,对于修改节点,那么就可以使用DataForm.aspx页面了。
NoteMod.aspx 的代码:
1 <body>
2 <form id="form1" runat="server">
3 <div style="width:100%; font-size:12pt; text-align: center;vertical-align:middle;">
4 <asp:Label ID="Lbl_Title" runat="server" style="font-size:14pt; "></asp:Label>
5 </div>
6 <div style="width:100%; text-align: center;vertical-align:middle;">
7 <Nature:MyForm ID="myForm" runat="server" onformbinded="myForm_FormBinded" />
8 <asp:Button ID="Btn_Save" runat="server" Text=" 保 存 " />
9
10 </div>
11 </form>
12 </body>
NoteMod.aspx.cs代码:
1using Nature.User;
2using Nature;
3using Nature.Data;
4using Nature.Common;
5using Nature.WebControls;
6
7namespace Nature.Manage
8{
9 /**//// <summary>
10 /// 功能节点的添加、修改
11 /// </summary>
12 public partial class NoteMod : CommonClass.BasePageForm
13 {
14 protected void Page_Load(object sender, EventArgs e)
15 {
16
17 }
18
19 保存节点#region 保存节点
20 protected override void Btn_Save_Click(object sender, EventArgs e)
21 {
22 //判断序号是否重复的。
23 MyTextBox txt = (MyTextBox)myForm.FindControl("c_1000090");
24 string sort = txt.Text;
25
26 if (dal.ExecuteExists("select top 1 1 from Manage_Function where sort =" + sort))
27 {
28 string parentPath = dal.ExecuteString("select ParentIDPath FROM Manage_Function WHERE (FunctionID = " + this.DataID + ")");
29 if (parentPath != null)
30 {
31 dal.ExecuteNonQuery("update Manage_Function set sort = sort + 100 where ParentIDPath + ',' like '" + parentPath + ",%' and sort >= " + sort);
32 }
33 }
34
35 this.myForm.SaveData();
36 Functions.PageRegisterJavascript(Page, "myReturn()");
37 }
38 #endregion
39
40 表单控件绑定后触发的事件#region 表单控件绑定后触发的事件
41 protected void myForm_FormBinded(object sender, EventArgs e)
42 {
43 string FunctionID = "";
44
45 获取数据库里的最大的FunctionID#region 获取数据库里的最大的FunctionID
46 FunctionID = dal.ExecuteString("select top 1 FunctionID from Manage_Function order by FunctionID desc ");
47 FunctionID = (Int32.Parse(FunctionID) + 1).ToString();
48
49 SetFormControlValue(myForm, "1000010", FunctionID);//查找功能节点ID
50
51 SetFormControlValue(myForm, "1000050", FunctionID);//查找权限标识
52
53 #endregion
54
55
56 //获取是要添加子节点,还是兄弟节点
57 string addNoteKind = Request.QueryString["n"];
58 if (addNoteKind == "1")
59 AddSonNote();
60 else
61 AddBortherNote();
62
63 设置添加人等#region 设置添加人等
64 SetFormControlValue(myForm, "1000130", MyUser.PersonID);//添加人
65 SetFormControlValue(myForm, "1000150", MyUser.PersonID);//修改人
66 SetFormControlValue(myForm, "1000120", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));//添加日期
67 SetFormControlValue(myForm, "1000140", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));//修改日期
68
69 #endregion
70 }
71 #endregion
72
73 添加子节点#region 添加子节点
74 /**//// <summary>
75 /// 添加子节点
76 /// </summary>
77 private void AddSonNote()
78 {
79 设置其他信息#region 设置其他信息
80 // 0 1 2 3 4 5
81 string[] funInfo = dal.ExecuteStringsBySingleRow("select ParentID, ParentIDPath, NoteLevel, Sort, WebURL, Target FROM Manage_Function WHERE (FunctionID = " + this.DataID + ")");
82 if (funInfo != null)
83 {
84 //设置父节点
85 SetFormControlValue(myForm, "1000020", this.DataID );//查找父节点
86
87 //设置父节点路径
88 SetFormControlValue(myForm, "1000032", funInfo[1] + "," + this.DataID);//查找父节点路径
89
90 //设置级数
91 SetFormControlValue(myForm, "1000060", (Int32.Parse(funInfo[2]) + 1).ToString());//查找级数
92
93 //设置网址
94 SetFormControlValue(myForm, "1000100", funInfo[4]);//查找网址
95
96 //设置目标
97 SetFormControlValue(myForm, "1000110", funInfo[5]);//查找目标
98
99 设置序号,子节点的情况#region 设置序号,子节点的情况
100 //获取指定的节点的所有子节点的最大序号序号。如果有则+100设置,等真正保存的时候在修改后面的序号。
101 //如果没有则本序号 + 100。
102
103 string sql = "select top 1 Sort from Manage_Function where ParentIDPath + ',' like '" + funInfo[1] + "," + this.DataID + ",%' and Sort > " + funInfo[3] + " order by sort desc";
104 string sort = dal.ExecuteString(sql);
105 if (sort != null)
106 {
107 //有子节点,设置序号
108 SetFormControlValue(myForm, "1000090", (Int32.Parse(sort) + 100).ToString());
109 }
110 else
111 {
112 //选中的节点没有子节点
113 sort = (Int32.Parse(funInfo[3]) + 100).ToString();
114
115 //设置序号
116 SetFormControlValue(myForm, "1000090", sort);
117
118 }
119 #endregion
120
121 }
122 #endregion
123
124
125
126 }
127 #endregion
128
129 添加兄弟节点#region 添加兄弟节点
130 /**//// <summary>
131 /// 添加兄弟节点
132 /// </summary>
133 private void AddBortherNote()
134 {
135 设置其他信息#region 设置其他信息
136 //获取指定节点的信息。
137 // 0 1 2 3 4 5
138 string[] funInfo = dal.ExecuteStringsBySingleRow("select ParentID, ParentIDPath, NoteLevel, Sort, WebURL, Target FROM Manage_Function WHERE (FunctionID = "+this.DataID +")");
139 if (funInfo != null)
140 {
141 //兄弟节点,下列信息一致
142 //设置父节点
143 SetFormControlValue(myForm, "1000020", funInfo[0]);//查找父节点
144
145 //设置父节点路径
146 SetFormControlValue(myForm, "1000032",funInfo[1] );//查找父节点路径
147
148 //设置级数
149 SetFormControlValue(myForm, "1000060",funInfo[2]);//查找级数
150
151 //设置网址
152 SetFormControlValue(myForm, "1000100",funInfo[4]);//查找网址
153
154 //设置目标
155 SetFormControlValue(myForm, "1000110",funInfo[5]);//查找目标
156
157 设置序号,兄弟节点的情况#region 设置序号,兄弟节点的情况
158 //获取指定节点的下一个节点的序号。如果有下一个节点,则直接设置,等真正保存的时候在修改后面的序号。
159 //如果没有则用指定节点的序号 + 100 。
160
161 //获取指定节点的下一个兄弟节点的序号
162 string sql = "select top 1 Sort from Manage_Function where ParentID = " + funInfo[0] + " and Sort > " + funInfo[3] + " order by sort";
163 string sort = dal.ExecuteString(sql);
164 if (sort != null)
165 {
166 //指定的节点有下一个兄弟节点,设置序号
167 SetFormControlValue(myForm, "1000090", sort);
168 }
169 else
170 {
171 //指定的节点有没有下一个兄弟节点,判断是否是一级节点,是的话,指定节点的序号 + 10000。
172 if (funInfo[0] == "0")
173 {
174 //一级节点
175 sort = (Int32.Parse(funInfo[3]) + 100000).ToString();
176
177 //设置序号
178 SetFormControlValue(myForm, "1000090", sort);
179 }
180 else
181 {
182 //非一级节点,寻找指定节点的子节点的最大的序号
183 sql = "select top 1 sort from Manage_Function where ParentIDPath + ',' like '" + funInfo[1] + ",%' order by sort desc ";
184 sort = dal.ExecuteString(sql);
185 if (sort != null)
186 sort = (Int32.Parse(sort) + 100).ToString();
187
188 //设置序号
189 SetFormControlValue(myForm, "1000090", sort);
190 }
191
192 }
193 #endregion
194
195 }
196 #endregion
197
198 设置添加人等#region 设置添加人等
199 SetFormControlValue(myForm, "1000130", MyUser.PersonID);//添加人
200 SetFormControlValue(myForm, "1000150", MyUser.PersonID);//修改人
201 SetFormControlValue(myForm, "1000120", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));//添加日期
202 SetFormControlValue(myForm, "1000140", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));//修改日期
203
204 #endregion
205
206 }
207
208 #endregion
209
210 //一会移动到表单控件里面
211 protected void SetFormControlValue(MyForm form,string columnID,string value)
212 {
213 WebControl webControl;
214
215 webControl = (WebControl)form.FindControl("c_" + columnID); //查找功能节点ID
216 ((IControlMgr)webControl).ControlValue = value;
217
218 }
219 }
220}
这里的代码就复杂了一些,但是也是围绕表单控件来做的。
- WordPress主题下funtions.php的一段“恶意”代码
- eclipse/intellij idea 远程调试hadoop 2.6.0
- Jexus 5.8.2 正式发布为Asp.Net Core进入生产环境提供平台支持
- 区块链技术发展前景可观,银链原子链已开始投入正常交易
- 分布式服务框架 dubbo/dubbox 入门示例
- SmtpClient发送邮件遭遇The specified string is not in the form required for a subject.
- 彻底解决WordPress 中 半角全角字符转义 的问题
- 利用Spring的@Async异步处理改善web应用中耗时操作的用户体验
- Oracle中使用Entity Framework 6.x Code-First方式开发
- 边缘计算推动AI发展 未来能摆脱云计算吗?
- intellij idea 高级用法之:集成JIRA、UML类图插件、集成SSH、集成FTP、Database管理
- 微软.NET Core RC2正式发布,横跨所有平台
- 二帮主:央行数字货币的崛起,会给比特币带来什么影响
- cas原理介绍
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android socket实现原理详解 服务端和客户端如何搭建
- Android使用ViewFlipper实现图片切换功能
- Android 图片显示与屏幕适配的问题
- Android实现截图和分享功能的代码
- Android 自定义相机及分析源码
- Android实现微博菜单弹出效果
- Android开发之拖动条和评分组件用法分析
- Android使用AsyncQueryHandler实现获取手机联系人功能
- Android用过TextView实现跑马灯效果的示例
- android如何设置Activity背景色为透明色
- Android 手机防止休眠的两种实现方法
- Android编程实现的首页左右滑动切换功能示例
- 零基础学小程序004----小程序post请求,提交数据到服务器,小程序下单,小程序用户注册功能
- HorizontalScrollView水平滚动控件使用方法详解
- Android Activity生命周期和堆栈管理的详解