在项目中用到了DevExpress的ASPxGridview控件,每每去配置它的时候,总感觉很是啰嗦,于是想到了用代码自动配置。

于是有了这样的代码:

             foreach (ZiyuWeb.Entity.Sys_UIConfig item in sConfigs)
{
switch (item.ControlName)
{
case "ASPxDropDown_ASPxCheckListBox":
{
DevExpress.Web.ASPxGridView.GridViewDataDropDownEditColumn col = new GridViewDataDropDownEditColumn();//创建一个表格列;
col.FieldName = item.FieldName;//表格列绑定的数据源字段名称
col.Caption = item.FieldDescribe;//字段显示标题
col.Name = "col_" + item.FieldName;//列名称
col.VisibleIndex = item.OrderByID;//显示顺序
col.Width = item.Width;//显示宽度
col.Visible = item.UserIsVisible;//是否可见
col.ReadOnly = item.UserReadOnly;//是否只读
// col.EditItemTemplate = new ZiyuWeb.ASPxCheckListBox_DropDownTemplate("", item.QueryStr, col.Name);//创建该字段的编辑模板,如果是标准的DevExpress.Web.ASPxEditor则无需创建编辑模板了。但若是DropDown或者自己写的控件,就必须自行创建了。
mygridview.Columns.Add(col);//添加到View; break;
}
……
}
}

  有了上面代码创建的表格,则ASPxGridview控件只需要设置一下配置文件名称和数据源,便可以以一行代码来完美展现了。

ZiyuWeb.WebFunc.ZiyuDevHelper.configGridView(ASPxGridView1, "Sys_UIConfig", true, null);

创建EditItemTemplate。

    class MyTemplate_AspxCheckBoxList : ITemplate
{
int _iwidth = 80;
public int Iwidth
{
get { return _iwidth; }
set { _iwidth = value; }
}
ZiyuWeb.Entity.Sys_UIConfig uiconfig;
public MyTemplate_AspxCheckBoxList(ZiyuWeb.Entity.Sys_UIConfig myuiconfig)
{
uiconfig = myuiconfig;
Iwidth = uiconfig.Width; }
public void InstantiateIn(Control container)
{
DevExpress.Web.ASPxEditors.ASPxCheckBoxList alistbox = new ASPxCheckBoxList();
alistbox.TextField = uiconfig.FieldName;
alistbox.ValueField = uiconfig.FieldName;
if (uiconfig.QueryStr != null)
{
if (uiconfig.QueryStr.Length > 0)
{
if (uiconfig.QueryStr.IndexOf("select") >= 0)
{
System.Collections.ArrayList alist = MyHelper4Web.MyStringHelper.getTableNamefromSql(uiconfig.QueryStr);
XCode.DataAccessLayer.DAL mydal = XCode.DataAccessLayer.DAL.Create("common");
System.Data.DataTable dt = mydal.Select(uiconfig.QueryStr, alist[0].ToString()).Tables[0];
if (dt.Columns.Count == 1)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
alistbox.Items.Add(dt.Rows[i][0].ToString());
}
}
}
else
{
System.Collections.ArrayList alist =
MyHelper4Web.MyConvertHelper.ConvertStringToArrayList(uiconfig.QueryStr, ";");
for (int i = 0; i < alist.Count; i++)
{
alistbox.Items.Add(alist[i].ToString());
}
}
}
}
alistbox.ID = "myCon_" + uiconfig.FieldName;
alistbox.ClientInstanceName = "myCon_" + uiconfig.FieldName;
alistbox.RepeatColumns = 3;
alistbox.TextWrap = false;
alistbox.RepeatDirection = RepeatDirection.Horizontal;
alistbox.RepeatLayout = RepeatLayout.Flow; string rowValue = (container as GridViewEditItemTemplateContainer).Text;
string[] rowValueItems = rowValue.Split(';');
List<string> rowValueItemsAsList = new List<string>();
rowValueItemsAsList.AddRange(rowValueItems);
foreach (ListEditItem item in alistbox.Items)
if (rowValueItemsAsList.Contains(item.Value.ToString()))
item.Selected = true;
container.Controls.Add(alistbox);
}
}

  

ASPxGridView动态创建表格列编辑模板的更多相关文章

  1. FineUIMvc随笔 - 动态创建表格列

    声明:FineUIMvc(基础版)是免费软件,本系列文章适用于基础版. 用户需求 用户希望实现动态创建表格列,在 WebForms 中,我们通过在 Page_Init 中创建列来实现: 但是在 MVC ...

  2. FineUIMvc随笔(1)动态创建表格列

    声明:FineUIMvc(基础版)是免费软件,本系列文章适用于基础版. <FineUIMvc随笔>目录 FineUIMvc随笔(1)动态创建表格列 FineUIMvc随笔(2)怎样在控件中 ...

  3. js/jq动态创建表格的行与列

    之前做了一个项目,需求是能动态创建表格行,动态创建表格的列,度了很多资料,都没有动态创建列的插件,所以自己动手写了一个 需求大概是(下图) 1.动态添加一行.2.动态添加一列,3.删除行.4.删除列, ...

  4. javascript动态创建表格:新增、删除行和列

    转载:http://www.cnblogs.com/pato/archive/2009/09/02/1559068.html 利用js来动态创建表格有两种格式,appendChild()和insert ...

  5. js动态创建表格,删除行列的小例子

    js动态创建表格,删除行列的实例代码. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &quo ...

  6. jquery动态创建表格

    1.代码实例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  7. 利用javascript动态创建表格

    //说明:实现功能.原理上文相同.不过这次是利用已有的简单的方法创建行和列,并实现内容行鼠标移入变色功能! 效果图: /*两个方法 1.  trNode  table.insertRow(-1)    ...

  8. js如何动态创建表格(两种方法)

    js如何动态创建表格(两种方法) 一.总结 一句话总结: 1.方法一:写好创建表格的html代码,将之赋值给div的innerHTML. 2.方法二.直接用创建好的table元素的方法insertRo ...

  9. 第84天:jQuery动态创建表格

    jQuery动态创建表格 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

随机推荐

  1. Scott Hanselman's 2014 Ultimate Developer and Power Users Tool List for Windows -摘自网络

    Everyone collects utilities, and most folks have a list of a few that they feel are indispensable.  ...

  2. Java语言速览:StackOverflow

    关于 java Java(请不要与 JavaScript 搞混)是一种设计为与 Java 虚拟机 (JVM) 一起使用的多用途编程语言.一般将安装了相关工具可以开发并运行 Java 程序的电脑系统称为 ...

  3. 最简单的计算MD5方法

    原来写过一个计算MD5的程序,是用了一个叫MD5.pas的单元,使用起来还算简单,但还有更简单的办法,安装了indy就会有IdHashMessageDigest单元(delphi 7默认安装indy) ...

  4. 转载Entity Framework 4.1 DbContext使用记之三——如何玩转实体的属性值?

    Entity Framework 4.1 DbContext使用记之一——如何查找实体? DbSet.Find函数的使用与实现 Entity Framework 4.1 DbContext使用记之二— ...

  5. oracle 修改用户下部分表现有表空间

    工作日记之<修改用户表现有表空间> //user_tables可查询出当前登录用户的所有表,以及部分表信息,可以灵活运用于其他用途 //假设现有表空间TS1.TS2,需要迁移所有表空间TS ...

  6. [置顶] Flex中Tree组件无刷新删除节点

    在Tree组件中经常要删除某个节点,而删除之后重新刷新加载该Tree组件会影响整个操作效果和效率,因此,无刷新删除就比较好,既删除了节点也没有刷新tree,而使Tree的状态处于删除之前的状态. 无刷 ...

  7. 初学XPath,其实很简单

    XPath 是一门在 XML 文档中查找信息的语言.XPath 用于在 XML 文档中通过元素和属性进行导航. (我的理解:XPath 就是一个用来查找xml节点的路径语言,一个路径字符串语法) XM ...

  8. 一、FreeMarker 模版开发指南 第一章 入门

    所有资料来自 南磊 翻译的官方文档,我弄简单了,适合自己以后拿出来翻看. 章节内容如下: 简介 模板+数据模型=输出 数据模型一览 模板一览 一.模板  +  数据模型  =  输出 输出结果: &l ...

  9. 重启PHP命令

    php-fpm重启 killall php-fpm 再执行(usr/local/php是php的安装目录)/usr/local/php/sbin/php-fpm & /usr/local/ng ...

  10. Codeforces Round #320 (Div. 1) [Bayan Thanks-Round] B. "Or" Game 线段树贪心

    B. "Or" Game Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/578 ...