FineUI 官方论坛

标题: 用户控件之间相互调用方法与传值示例 [打印本页]

作者: 秋收    时间: 2017-3-27 21:56
标题: 用户控件之间相互调用方法与传值示例
充分利用用户控件功能,将复杂页面拆分成许多小的模块,
利用用户控件的回调函数处理多个用户控件之间相互联动,
从而避免因复杂的网页产生巨大的程序,
使系统结构更加清晰、系统具有低耦合度,系统开发复杂程度大大降低,
同时因小的模块具有很高的可重用性,因此开发效率也可大大提高。

[attach]9992[/attach]
[attach]9993[/attach]


作者: sanshi    时间: 2017-3-27 23:12
有空写篇博客详细讲解下,只是代码恐怕很多人看不懂
作者: 秋收    时间: 2017-3-28 14:31
用户控件之间相互调用方法与传值应用体会

    用户控件之间相互调用方法与传值的原理及应用经验的介绍文章在网上能搜到很多。本人也只是进行了一些实际应用,上传的示例也是借花献佛。
    示例代码仅150行左右,仅为最基本应用,如有应用场景,按照例子思路照着做即可。
    在此仅谈谈在实际应用过程中的一此体会:

    一、应用用户控件的必要性

    世间万事万物都由几种基本的元素通过不同比例和结构排列组合而成,软件编程也是如此。我们为什么要用FineUI,因为它将一些我们经常要用到的一些控件进行了抽象和封装,如Menu、Grid、各种布局等,能够大大提高我们进行再组合封装的效率。
    但一般开发工具提供的控件为保证 一定的通用性,往往是与最终业务逻辑无关的,而我们进行企业应用开发则一定是与业务逻辑相关的。所谓的开发就是根据业务逻辑,对开发工具提供的基本控件进行分类、分组、处理它们之间的逻辑关系并进行再封装。对于非用户界面内容,我们一般用类来进行封装,对于用户界面,我们一般分成多个窗口或多个页面,在Delph,BC++中则用VCL控件实现。在C/S结构程序中,实现窗口或模块间的通讯或数据传递手段较多,实现相对容易。而在B/S结构程序中,在数据量不大时可用Application,Session、ViewState、localStorage进行数据传递,但只能传递数据,不能调用方法和事件。
    而ASP.NET的用户控件为网页中复杂的单页应用提供了实现业务逻辑中用户界面交互功能的分类、分解、建模、封装、相互协调的一个重要手段。

    二、应用用户控件的要点及说明

    1、多个用户控件要求在同一个页面;
    2、用户控件中的基础控件的ID最好加上用户控件的ID,以避免多个用户控件中的基础控件产生冲突。另外,用户控件中的基础控件最好在页面初始化时创建,才能将用户控件的ID附加上去。
    3、示例仅用了一个文本框基础控件,但实际应用时会用到各种类型的基础控件,因此在创建基础控件、获取基础控件的值、设置基础控件的值时要用CASE或IF分别进行处理,这时代码量会很快升到千行万行,但情况都基本上很类似,实现只是时间问题,且一旦实现,则可反复重复使用。
    4、示例中的回调函数使用了三个参数:V0为用户控件ID,以便主程序知道是那一个用户控件产生的调用,V1为用户控件中的事件标识,以便主程序判断是那一个事件产生的调用,V2为传递的参数值,当需要传递多个基础控件值时可用JSON格式进行打包后再交由V2传递。另外主程序也可用“用户控件ID.公共方法”的方式直接调用用户控件内部方法并返回其值。
    5、主页面仅关心各用户控件的综合布局和相互协调,尽量不要处理具体业务逻辑,业务逻辑尽可能交给用户控件去处理。这样才能达到黑箱、低耦合度、可重用等目的。
    6、用户控件中的基础控件,最好能够参数化,即通过XML、数组或数据库表等方式在外部独立描述其属性,这样才便于利用循环和CASE进行处理。

    三、应用用户控件的阶段

    用户控件要发挥较大的实际作用,业务逻辑的分解、建模、抽象,参数化、对开发工具提供的各种布局、基础控件的属性、事件及方法要综合考虑。因此它并不适合初学者使用。应该在对开发工具较为熟悉、对建模、抽象、低耦合、可重用、可维护等有一定体会和需求后再进行实践。否则,如果不能大量重复使用用户控件,系统反而会变得更加绕,实现业务逻辑变得更加复杂,从而失去实际应用价值。





欢迎光临 FineUI 官方论坛 (https://fineui.com/bbs/) Powered by Discuz! X3.4