【自然框架】之鼠标点功能现(二):表单控件的“应用”—— 代码?只写需要的!

简介:   【自然框架】之鼠标点功能现(一):单表的增删改查(即上次5月23日活动的一个主题)【Demo、源码下载】           看了大家的回复,好像不少人误会了,我为了突出“鼠标点,功能现”,所以没有说代码,没有贴代码,这就让一些人认为我想要完全抛弃VS,自己写一个“平台”来代替,不好意思,您高估我了,我可达不到。

 

 

【自然框架】之鼠标点功能现(一):单表的增删改查(即上次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  &nbsp;  
41  &nbsp; </ 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  &nbsp;  
10  &nbsp; </ div >
11       </ form >
12  </ body >

 

NoteMod.aspx.cs代码:

 

 

 

  1 using  Nature.User;
  2 using  Nature;
  3 using  Nature.Data;
  4 using  Nature.Common;
  5 using  Nature.WebControls;
  6
  7 namespace  Nature.Manage
  8 img_405b18b4b6584ae338e0f6ecaf736533.gifimg_1c53668bcee393edac0d7b3b3daff1ae.gif {
  9img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif    /**//// <summary>
 10    /// 功能节点的添加、修改
 11    /// </summary>

 12    public partial class NoteMod : CommonClass.BasePageForm   
 13img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif    {
 14        protected void Page_Load(object sender, EventArgs e)
 15img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif        {
 16
 17        }

 18
 19img_7a2b9a960ee9a98bfd25d306d55009f8.gifimg_2887d91d0594ef8793c1db92b8a1d545.gif        保存节点#region 保存节点
 20        protected override void Btn_Save_Click(object sender, EventArgs e)
 21img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif        {
 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))
 27img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif            {
 28                string parentPath = dal.ExecuteString("select  ParentIDPath FROM Manage_Function WHERE (FunctionID = " + this.DataID + ")");
 29                if (parentPath != null)
 30img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif                {
 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
 40img_7a2b9a960ee9a98bfd25d306d55009f8.gifimg_2887d91d0594ef8793c1db92b8a1d545.gif        表单控件绑定后触发的事件#region 表单控件绑定后触发的事件
 41        protected void myForm_FormBinded(object sender, EventArgs e)
 42img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif        {
 43            string FunctionID = "";
 44
 45img_7a2b9a960ee9a98bfd25d306d55009f8.gifimg_2887d91d0594ef8793c1db92b8a1d545.gif            获取数据库里的最大的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
 63img_7a2b9a960ee9a98bfd25d306d55009f8.gifimg_2887d91d0594ef8793c1db92b8a1d545.gif            设置添加人等#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
 73img_7a2b9a960ee9a98bfd25d306d55009f8.gifimg_2887d91d0594ef8793c1db92b8a1d545.gif        添加子节点#region 添加子节点
 74img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif        /**//// <summary>
 75        /// 添加子节点
 76        /// </summary>

 77        private void AddSonNote()
 78img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif        {
 79img_7a2b9a960ee9a98bfd25d306d55009f8.gifimg_2887d91d0594ef8793c1db92b8a1d545.gif            设置其他信息#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)
 83img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif            {
 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
 99img_7a2b9a960ee9a98bfd25d306d55009f8.gifimg_2887d91d0594ef8793c1db92b8a1d545.gif                设置序号,子节点的情况#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)
106img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif                {
107                    //有子节点,设置序号
108                    SetFormControlValue(myForm, "1000090", (Int32.Parse(sort) + 100).ToString());
109                }

110                else
111img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif                {
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
129img_7a2b9a960ee9a98bfd25d306d55009f8.gifimg_2887d91d0594ef8793c1db92b8a1d545.gif        添加兄弟节点#region 添加兄弟节点
130img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif        /**//// <summary>
131        /// 添加兄弟节点
132        /// </summary>

133        private void AddBortherNote()
134img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif        {
135img_7a2b9a960ee9a98bfd25d306d55009f8.gifimg_2887d91d0594ef8793c1db92b8a1d545.gif            设置其他信息#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)
140img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif            {
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
157img_7a2b9a960ee9a98bfd25d306d55009f8.gifimg_2887d91d0594ef8793c1db92b8a1d545.gif                设置序号,兄弟节点的情况#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)
165img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif                {
166                    //指定的节点有下一个兄弟节点,设置序号
167                    SetFormControlValue(myForm, "1000090", sort);
168                }

169                else
170img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif                {
171                    //指定的节点有没有下一个兄弟节点,判断是否是一级节点,是的话,指定节点的序号 + 10000。
172                    if (funInfo[0== "0")
173img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif                    {
174                        //一级节点
175                        sort = (Int32.Parse(funInfo[3]) + 100000).ToString();
176
177                        //设置序号
178                        SetFormControlValue(myForm, "1000090", sort);
179                    }

180                    else
181img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif                    {
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
198img_7a2b9a960ee9a98bfd25d306d55009f8.gifimg_2887d91d0594ef8793c1db92b8a1d545.gif            设置添加人等#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)
212img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif        {
213            WebControl webControl;
214
215            webControl = (WebControl)form.FindControl("c_" + columnID);   //查找功能节点ID
216            ((IControlMgr)webControl).ControlValue = value;
217
218        }

219    }

220}

 

 

这里的代码就复杂了一些,但是也是围绕表单控件来做的。

 

 

 

 

相关文章
|
3月前
|
安全 BI UED
分享一个在 WinForm 桌面程序中使用进度条展示报表处理进度的例子,提升用户体验
分享一个在 WinForm 桌面程序中使用进度条展示报表处理进度的例子,提升用户体验
|
5月前
|
编解码 前端开发 JavaScript
带您一步步构建一个基本的动态新闻网站,包括页面布局、样式设计以及交互效果的实现
【6月更文挑战第14天】构建动态新闻网站实战项目,涉及页面布局、样式设计和交互实现。首页采用顶部导航栏、轮播图和新闻列表布局;新闻列表页按分类显示新闻,详情页展示完整内容并可添加相关推荐和评论。设计注重色彩搭配、字体选择和布局间距,实现轮播图效果、导航栏交互和响应式设计,提升用户体验。该项目有助于锻炼HTML和CSS技能,理解网页设计实际应用。
140 1
|
4月前
|
前端开发
ElementPlus卡片如何能够一行呈四,黑马UI前端布局视频资料,element样式具体的细节无法修改,F12找到那个位置,可能在其他组件写了错误,找到那个位置,围绕着位置解决问题最快了,卡片下边
ElementPlus卡片如何能够一行呈四,黑马UI前端布局视频资料,element样式具体的细节无法修改,F12找到那个位置,可能在其他组件写了错误,找到那个位置,围绕着位置解决问题最快了,卡片下边
|
5月前
|
前端开发 程序员 UED
全面解析layui:掌握基础知识与实用技能(1. 核心组件与模块 2. 布局与容器 3. 弹出层与提示框;1. 数据表格与数据表单 2. 表单验证与提交 3. 图片轮播与导航菜单)
全面解析layui:掌握基础知识与实用技能(1. 核心组件与模块 2. 布局与容器 3. 弹出层与提示框;1. 数据表格与数据表单 2. 表单验证与提交 3. 图片轮播与导航菜单)
78 0
|
6月前
【实用】一个移动端简单的UI弹窗组件,虽算不上高大上,但至少耐看
【实用】一个移动端简单的UI弹窗组件,虽算不上高大上,但至少耐看
|
算法 API C#
Winform控件优化之圆角按钮【各种实现中的推荐做法】(下)
最终优化实现ButtonPro按钮(继承自Button),既提供Button原生功能,又提供扩展功能,除了圆角以外,还实现了圆形、圆角矩形的脚尖效果、边框大小和颜色、背景渐变颜色...
1951 0
Winform控件优化之圆角按钮【各种实现中的推荐做法】(下)
|
前端开发 定位技术
百度地图开发自定义信息窗口openInfoWindow样式的解决方案
百度地图开发自定义信息窗口openInfoWindow样式的解决方案
1276 0
|
C# 图形学 Windows
Winform控件优化之圆角按钮【各种实现中的推荐做法】(上)
Windows 11下所有控件已经默认采用圆角,其效果更好、相对有着更好的优化...尝试介绍很常见的圆角效果,通过重写控件的OnPaint方法实现绘制,并在后面进一步探索对应的优化和可能的问题
1416 0
Winform控件优化之圆角按钮【各种实现中的推荐做法】(上)
|
前端开发 小程序 大数据
你真的会做小程序按钮吗?看了字节35K前端的样式设计,悟了
你真的会做小程序按钮吗?看了字节35K前端的样式设计,悟了
172 0
你真的会做小程序按钮吗?看了字节35K前端的样式设计,悟了
|
前端开发
前端工作总结108-修改新增按钮显示逻辑
前端工作总结108-修改新增按钮显示逻辑
107 0
前端工作总结108-修改新增按钮显示逻辑