声明:FineUIMvc(基础版)是免费软件,本系列文章适用于基础版。

《FineUIMvc随笔》目录

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

FineUIMvc随笔(2)怎样在控件中嵌套 HTML

FineUIMvc随笔(3)不能忘却的回发(__doPostBack)

FineUIMvc随笔(4)自定义回发参数与自定义回发

FineUIMvc随笔(5)UIHelper是个什么梗?

FineUIMvc随笔(6)对比WebForms和MVC中表格的数据库分页

FineUIMvc随笔(7)扩展通知对话框(显示多个不重叠)

...

用户需求

用户希望实现动态创建表格列,在 WebForms 中,我们通过在 Page_Init 中创建列来实现:

但是在 MVC 中,如果还想着 WebForms 的那一套,想着怎么才能在 Controller 中访问 View 中的表格控件,这是行不通的。

我曾写过一个系列文章《ASP.NET MVC快速入门(MVC5+EF6)》,开篇就讲到了 MVC 中的页面的生成流程:

这个页面之所以能够呈现在我们眼前,经历了三个主要流程:

  1. MVC的路由引擎根据URL查找相应的控制器(HomeController.cs)。
  2. 控制器的操作方法About准备数据,然后传入视图Home/About.cshtml。
  3. 视图准备HTML片段,放入布局页面并返回浏览器。

控制器准备数据,传入视图,然后视图才开始渲染页面。也就是说控制器执行时,对视图的内容一无所知。理解这一点很重要。

动态创建表格列

当然在 MVC 中实现动态创建表格列也不难,我们需要将表格列数据(GridColumn[])像表格数据源一样传递给视图即可。

控制器:

// GET: Grid/DynamicColumns
public ActionResult Index()
{InitGridColumns();return View(DataSourceUtil.GetDataTable());
}private void InitGridColumns()
{List<GridColumn> columns = new List<GridColumn>();RenderField field = null;columns.Add(new RowNumberField());field = new RenderField();field.HeaderText = "性别";field.DataField = "Gender";field.FieldType = FieldType.Int;field.RendererFunction = "renderGender";field.Width = 80;columns.Add(field);field = new RenderField();field.HeaderText = "入学年份";field.DataField = "EntranceYear";field.FieldType = FieldType.Int;field.Width = 100;columns.Add(field);RenderCheckField checkfield = new RenderCheckField();checkfield.HeaderText = "是否在校";checkfield.DataField = "AtSchool";checkfield.RenderAsStaticField = true;checkfield.Width = 100;columns.Add(checkfield);// ...
ViewBag.Grid1Columns = columns.ToArray();
}

在控制器中,动态创建 List<GridColumn> 对象,并保存到 ViewBag.Grid1Columns。

实际项目中,这一步可能需要和数据库交互,来获取需要动态创建的表格列。

视图:

@{ViewBag.Title = "Grid/Grid";var F = @Html.F();
}@model System.Data.DataTable@section body {@(F.Grid().EnableCollapse(true).Width(850).Title("表格(动态创建列)").ShowHeader(true).ShowBorder(true).ID("Grid1").DataIDField("Id").DataTextField("Name").Columns(ViewBag.Grid1Columns).DataSource(Model))<br><br>@(F.Button().Text("选中了哪些行").ID("Button1").Listener("click", "notifySelectedRows('Grid1');"))}

页面效果:

小结

本篇文章介绍了 WebForms 和 MVC 中动态创建表格列的方法。通过对比,也希望大家能充分了解两种框架的重要区别。

如果你刚开始接触 MVC,建议先从三石的系列教程开始:http://www.cnblogs.com/sanshi/p/6210695.html

转载于:https://www.cnblogs.com/sanshi/p/6473592.html

FineUIMvc随笔(1)动态创建表格列相关推荐

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

    利用js来动态创建表格有两种格式,appendChild()和insertRow.insertCell().两种方式其实差不多,但第一种有可能在IE上有问题,所以推荐大家使用第二种了,直接说吧. 1. ...

  2. 在iView中动态创建表格

    最近在使用iView中的表格组件时,碰到许多坑和疑惑,仔细研究了一下table组件,发现官方文档讲的不是很清楚,本文将介绍并使用table组件,做一个动态创建表格的demo,效果如下图. 一.在col ...

  3. javascript 动态创建表格:新增、删除行和单元格

    2019独角兽企业重金招聘Python工程师标准>>> 利用js来动态创建表格有两种格式,appendChild()和insertRow.insertCell().两种方式其实差不多 ...

  4. 利用javascript动态创建表格

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

  5. js动态创建表格以及赋值

    1.使用js动态创建表格 (1)不可编辑的表格 function creatTableA() {var tbody = document.querySelector('#tableA');for (v ...

  6. 动态创建表格给同一个标签创建点击事件并让点击事件操作内容不一样

    动态创建表格给同一个标签创建点击事件,每个点击事件操作的元素不一样. 现在有这样的需求,点击"查看详细"显示或隐藏标签.要实现这样的效果就要给点击标签添加两个属性,一个属性是nam ...

  7. JavaScript学习(二十二)—动态创建表格

    JavaScript学习(二十二)-动态创建表格 效果如下: 代码如下: <!DOCTYPE html> <html lang="en"><head& ...

  8. 在页面上根据数据,动态创建表格

    在页面上根据数据,动态创建表格 var arr = [ { name: 'Jack', age: 18, gender: '男' },{ name: 'Rose', age: 20, gender: ...

  9. DevExpres表格控件运行时动态设置表格列

    本文是系列文章,陆续发表于电脑编程技巧与维护杂志. DevExpres产品是全球享有极高声誉的一流控件套包产品!国内典型用户包括:用友.金蝶.神州数码.工信部.中国石化.汉王科技等众多大中型科技型企业 ...

最新文章

  1. 用动态数组模拟双向循环链表
  2. Linux系统中网络配置详解
  3. 他在计算机上工作英语翻译,英语翻译1.尽管他在手术中割破了手,但他仍在继续工作.(in spite of)2.计算机在现代生活中起着重要的作用.(...
  4. python高手养成_不要总抱怨它慢了 突破性能瓶颈 找到Python序列筛选数据的最优解...
  5. 【Python】使用Labelme标注自己的数据集并由json生成Ground Truth
  6. python下载安装教程
  7. Matlab魔方矩阵的创建及逻辑矩阵的用法
  8. 单片机c语言中的精确延时程序,单片机精确毫秒延时函数
  9. 我的世界java版怎么打开游戏菜单_我的世界游戏界面设置方法
  10. 【VirtualBoxUbuntu】VirtualBox中Ubuntu虚拟机磁盘碎片整理并压缩磁盘空间
  11. excel(2015)表格如何在滑动时固定标题栏
  12. 短信链接复制搜索公众号,短信如何推广公众号?
  13. Java异常之 Error 和 Exception
  14. Cesium设置三维球的视角和位置(中心点)
  15. 新南威尔士大学纯硅量子计算机,新南威尔士大学工程科学硕士-电气工程小方向课程解析...
  16. 【论文】caj文件打开方式
  17. django种表单post出现CSRF verification failed( CSRF验证失败 ) 的两种解决方案
  18. DirectFB代码导读
  19. vue 中使用 marked + highlight.js 代码高亮
  20. 机器人运动估计——IMU运动方程与ESKF原理介绍(上)

热门文章

  1. ArcGIS 坐标系统文件
  2. matlab拟合曲线后求导,高手留步:MATLAB五阶拟合函数,求导后离散化,输出结果是星号...
  3. ad16不能去除铺铜_净水处理-原水中的二氧化硅、铜和铁对锅炉运行的影响
  4. ubuntu系统写路由指令_ubuntu/linux下设置永久路由
  5. go语言的iota是什么意思_关于Golang中的iota
  6. python列表输入不加逗号_用python打印不带括号或逗号的列表
  7. Angular使用mathjs
  8. Matlab读取二进制文件----fread
  9. C++知识点32——使用C++标准库(关联容器set和multiset的初始化,赋值,查找,添加,删除与迭代器失效)
  10. Opencv开闭运算去除反光噪声