近期在做的项目中。依据查询到的数据,然后动态的拼接easyUI的控件显示到界面上。

在数据库中,有一个命令的表,另一个參数的表,先到命令的表中去查询这一个设备有哪些命令,比方说。摄像头有一个转动的命令,那么就要把转动这个命令动态的拼接成EasyUI的Buttonbutton。然后依据命令去查询这个命令下的參数,比方说,转动是有角度的,10°,20°……。这个度就是命令下的參数,然后动态的拼接成text或者combobox的样式。

以下就把代码展示一下,B层和D层都是简单的查询。返回的是DataTable,然后我在B层加了一个转换的类,将DataTable中的数据转换成前台要显示的Json串。

 #region GetDeviceFuncParJson 动态拼接设备控制下的命令和參数
''' <summary>'''
''' 动态拼接设备控制下的命令和參数'''
''' </summary>'''
''' <param name="dt">传入的表</param>'''
''' <returns>json串</returns>'''
public static string GetDeviceFuncParJson(DataTable dt)
{ '''定义两个空的字符串类型'''
string stringJson = ""; //</div>
//string total = "";
foreach (DataRow dsFunc in dt.Rows)
{
stringJson += "<div style=\"\">";
'''获取命令ID'''
string stringFuncId = dsFunc["function_id"].ToString();
'''拼接命令參数'''
StateEventFunctionBLL stateEventFunctionBLL = new StateEventFunctionBLL();
'''调用查询方法,返回參数值'''
DataTable dtParms = stateEventFunctionBLL.GetDeviceFunctionParams(int.Parse(stringFuncId)); '''TODO:加推断,命令是否有參数。有參数的放左边,没有參数的放右边'''
if (dtParms.Rows.Count>=1)
{
foreach (DataRow dsParms in dtParms.Rows)
{
'''拼接名称text文本框'''
stringJson += "<br><input id=\"\" class=\"easyui-validatebox textbox\" value=\"" + dsParms["par_name"].ToString() + "\" disabled=\"disabled\" style=\"height: 20px; margin-left:10px;\"/>";
'''拼接默认值combobox下拉框'''
stringJson += "<select id=\"\" value=\"\" class=\"easyui-combobox\" style=\"margin-left:10px; width:130px;\" name=\"dept\" data-options=\"\"><option value=\"1\">" + dsParms["par_default_value"].ToString() + "</option></select>";
}
'''假设最后多一个“,”的话,就把它删掉'''
if (stringJson.ToString().EndsWith("<br>"))
{
stringJson.Remove(stringJson.Length - 1, 1);
}
} string strChinese = dsFunc["function_name"].ToString();
string strChiToAllSpell = ChineseToSpellBLL.ConvertToAllSpell(strChinese);
'''拼接成命令button'''
stringJson += "<a id=\"" + strChiToAllSpell + "\" style=\"margin-left:40px\" href=\"javascript:void(0)\" class=\"easyui-linkbutton\">" + dsFunc["function_name"].ToString() + "</a></div>"; }
'''返回拼接好的參数和命令的样式'''
return stringJson; }
#endregion

动态载入的界面例如以下:

动态拼接的方法,一開始的时候,感觉非常难,挺复杂的,事实上一步一步的去研究后你会发现,没有那么的难,学会了你就会发现。拼接的原理是相似的,再让你去拼接其它的控件或者要用到的东西的时候,就会非常快的把它做出来!

EasyUI----动态拼接EasyUI控件的更多相关文章

  1. easyui中tree型控件不正常显示的处理方法

    我在使用easyui中的tree控件时,出现不正常显示的现象,比如li中不能使用自定义的图标.父级展开或关闭时,其子级仍然显现并出现重叠等.找了很多资料,都没解决这个问题,后来逐个对照官方的源码,才找 ...

  2. 给easyui datebox时间框控件扩展一个清空的实例

    给easyui datebox扩展一个清空的实例 步骤一:拓展插件 /** * 给时间框控件扩展一个清除的按钮 */ $.fn.datebox.defaults.cleanText = '清空'; ( ...

  3. winform 用户控件、 动态创建添加控件、timer控件、控件联动

    用户控件: 相当于自定义的一个panel 里面可以放各种其他控件,并可以在后台一下调用整个此自定义控件. 使用方法:在项目上右键.添加.用户控件,之后用户控件的编辑与普通容器控件类似.如果要在后台往窗 ...

  4. WinForm用户控件、动态创建添加控件、timer控件--2016年12月12日

    好文要顶 关注我 收藏该文 徐淳 关注 - 1 粉丝 - 3       0 0     用户控件: 通过布局将多个控件整合为一个控件,根据自己的需要进行修改,可对用户控件内的所有控件及控件属性进行修 ...

  5. Pyqt 动态的添加控件

    Pyqt 动态的添加控件 # -*- coding: utf-8 -*- from PyQt4.QtCore import * from PyQt4.QtGui import * import sys ...

  6. winform用户控件、动态创建添加控件、timer控件、控件联动

    用户控件: 相当于自定义的一个panel 里面可以放各种其他控件,并可以在后台一下调用整个此自定义控件. 使用方法:在项目上右键.添加.用户控件,之后用户控件的编辑与普通容器控件类似.如果要在后台往窗 ...

  7. 谨记给UpdatePanel中动态添加的控件赋ID

    原文:谨记给UpdatePanel中动态添加的控件赋ID 昨天下定决 心对上次做的布局编辑器控件加以改进,其中最主要变化的就是要完全使用ASP.NET AJAX!但是很遗憾,虽然耳闻已久,但目前对AS ...

  8. asp.net动态网站repeater控件使用及分页操作介绍

    asp.net动态网站repeater控件使用及分页操作介绍 1.简单介绍 Repeater 控件是一个容器控件,可用于从网页的任何可用数据中创建自定义列表.Repeater 控件没有自己内置的呈现功 ...

  9. 袁创:使用反射动态调用ActiveX控件

    ■■■■前言 目前的基于.NET平台的软件研发中仍然存在大量的对COM及ActiveX控件的调用.使用C#调用ActiveX控件时一般是使用vs.net工具自动生成的互操作性程序集.这种方法操作简单, ...

  10. 使用反射动态调用ActiveX控件

    使用反射动态调用ActiveX控件 袁永福 2018-3-2 ■■■■问题描述: 目前的基于.NET平台的软件研发中仍然存在大量的对COM及ActiveX控件的调用.使用C#调用ActiveX控件时一 ...

随机推荐

  1. J2EE7与Servlet3.x

    J2EE7结构图 JWS:即Java Web Service,指与webservice相关的JavaEE技术部分,webservice是一种基于XML的独立的.跨平台的.互操作的应用程序,XML又包含 ...

  2. JavaScript:DOM对象

    ylbtech-JavaScript:DOM对象 1. HTML DOM Document 对象返回顶部 1. HTML DOM Document 对象 HTML DOM 节点 在 HTML DOM ...

  3. 框架:Rureka

    ylbtech-框架:Rureka Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的.S ...

  4. 常用图片、文字轮播插件SuperSlide

    SuperSlide 是致力于实现网站统一特效调用的函数,能解决大部分标签切换.焦点图切换等效果,还能多个slide组合创造更多的效果.(兼容ie内核(包括无敌的ie6).webkit内核.ff.op ...

  5. map 和 for

    一.map 函数封装. ; [,,,,,,,].map(function(elem){ sum += elem; }) console.log('sum='+sum); 二.平时用for的写法. ,, ...

  6. vue 返回上一页在原来的位置

    http://www.jb51.net/article/118592.htm http://blog.csdn.net/qq_26598303/article/details/51189235 htt ...

  7. 谷歌C++编程为何禁止缺省参数

    C++的缺省参数尽量不要使用,结果可能出乎我们的意料,下面的程序大家看看输出结果是多少? )                  cout << num << endl;     ...

  8. MVC 入口

    1.在 Global.asax public class MvcApplication : System.Web.HttpApplication { protected void Applicatio ...

  9. ubuntu18.0安装redis

    ubuntu版本:Ubuntu-Server 10.04.1 LTS redis版本:4.0.9 安装 使用apt安装 sudo apt-get update sudo apt-get install ...

  10. [IOI2011]Race $O(nlog^{2}n)$ 做法

    这个应该还不是正解,明天看一下正解到底是什么... Code: #include<bits/stdc++.h> #define setIO(s) freopen(s".in&qu ...