1. 程式人生 > >FineUIMvc隨筆(1)動態建立表格列

FineUIMvc隨筆(1)動態建立表格列

宣告:FineUIMvc(基礎版)是免費軟體,本系列文章適用於基礎版。

《FineUIMvc隨筆》目錄

...

使用者需求

使用者希望實現動態建立表格列,在 WebForms 中,我們通過在 Page_Init 中建立列來實現:

但是在 MVC 中,如果還想著 WebForms 的那一套,想著怎麼才能在 Controller 中訪問 View 中的表格控制元件,這是行不通的。

這個頁面之所以能夠呈現在我們眼前,經歷了三個主要流程:

  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 中動態建立表格列的方法。通過對比,也希望大家能充分了解兩種框架的重要區別。

相關推薦

FineUIMvc隨筆1動態建立表格

宣告:FineUIMvc(基礎版)是免費軟體,本系列文章適用於基礎版。 《FineUIMvc隨筆》目錄 ... 使用者需求 使用者希望實現動態建立表格列,在 WebForms 中,我們通過在 Page_Init 中建立列來實現: 但

FreeRTOS學習筆記1---任務建立與刪除API函式動態函式

FreeRTOS最基本的功能是任務管理,任務管理有建立與刪除任務 1.函式xTaskCreate()     此函式用來建立一個任務,使用此函式來建立任務所需的RAM(隨機儲存器)會從FreeRTOS的堆中分配,因此必須提供記憶體管理檔案,預設使用heap_4.c這個

FineUIMvc隨筆6對比WebForms和MVC中表格的資料庫分頁

宣告:FineUIMvc(基礎版)是免費軟體,本系列文章適用於基礎版。 通過對比WebForms和MVC中表格資料庫分頁程式碼的不同,可以對 MVC 中的資料流轉有更加深入的瞭解。 WebForms 中表格的資料庫分頁 WebForms中的程式碼會比較直觀,我們從具體是示例入手: http://fin

IDEA struts2隨筆1

down struts1 blog 發布 總結 api idt tomcat服務器 技術分享   struts2為基於MVC模式的輕量級web層應用框架,其以WebWork為核心,采用攔截器機制處理前端頁面的請求,從而使得web層的業務邏輯控制能夠與Servlet API完

效能學習隨筆1--負載均衡之f5負載均衡

負載均衡設計涉及軟體負載和硬體負載,下文轉自CSDN中一篇文章涉及f5硬負載知識 ----轉載:https://blog.csdn.net/tvk872/article/details/80634898 網路負載均衡(load balance),就是將負載(工作任務)進行平衡、分攤到多個操作單元上進行執行

Flink流計算隨筆1

Apache Flink(下簡稱Flink)專案是大資料處理領域最近冉冉升起的一顆新星,其不同於其他大資料專案的諸多特性吸引了越來越多人的關注。本文將深入分析Flink的一些關鍵技術與特性,希望能夠幫助讀者對Flink有更加深入的瞭解,對其他大資料系統開發者也能有所裨益。本文

演算法練習1動態規劃:買賣股票的最佳時機1

給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。 如果你最多隻允許完成一筆交易(即買入和賣出一支股票),設計一個演算法來計算你所能獲取的最大利潤。 注意你不能在買入股票前賣出

Python 隨筆1 時間格式轉換

Python 有許多的時間格式 在將時間進行計算或者存入資料庫時 往往就需要對時間進行轉換 這裡將 時間戳 字串 datatime struct_time 做了隱式轉換的封裝成類 有更多的時間格式 可在下面留言 #!/usr/bin/env python

React從入門到架構1--手把手建立、解讀以及開發第一個ReactApp

在開始建立第一個專案之前,我們有一些準備工作要做: 1. 前置工作–安裝軟體 安裝nodejs軟體,官網都有免費的可以下載:nodejs下載地址. 安裝VS Code軟體,不喜歡VS Code的也可以使用sublime Text都可以的,官網可以免費下載安裝:V

MongoDB學習隨筆1

索引的小細節 Mongodb 的多鍵索引指的是索引中有一個鍵在某一個文件中是一個數組,那麼在explain操作中,"isMultikey"為true,而且比非多鍵索引效率低,因為可能有多個索引指向一個文件,返回結果集需要去重操作。 explain 中的 n / nsc

人人都能讀懂的設計模式1建立型模式

簡介 設計模式用於解決反覆出現的問題,是解決特定問題的指導方針。設計模式不是在應用中引用的類、package 或者庫,而是在某些特定場景下解決特定問題的指導方針。 設計模式用於解決反覆出現的問題,是解決某些特定問題的指導方針。 維基百科中這樣描述設計模式: 在軟體工

FineUIMvc隨筆7擴充套件通知對話方塊顯示多個不重疊

宣告:FineUIMvc(基礎版)是免費軟體,本系列文章適用於基礎版。 這篇文章我們將改造 FineUIMvc 預設的通知對話方塊,使得同時顯示多個也不會重疊。並提前出一個公共的JS檔案,供大家使用。 FineUIMvc 的通知對話方塊 FineUIMvc預設的通知對話方塊通過 F.notify 來顯示

FineUIMvc隨筆4自定義回發引數與自定義回發

宣告:FineUIMvc(基礎版)是免費軟體,本系列文章適用於基礎版。 不能忘卻的回發 在上一篇文章中,我們對FineUIMvc中的回發進行了詳細描述,目的是為了告訴大家: 1. FineUIMvc中的回發其實是請求控制器方法的另一種表述而已 2. 回發是輕量級,只會傳入你允許傳入的引數 3. 回發

FineUIMvc隨筆5UIHelper是個什麼梗?

宣告:FineUIMvc(基礎版)是免費軟體,本系列文章適用於基礎版。 UIHelper.Result 在 FineUIMvc 的每一個 HttpPost 的控制器方法裡面,你都會看到 UIHelper.Result(): 這到底是個什麼梗?在 ASP.NET MVC 中並沒有 UIHelper

FineUIMvc隨筆2怎樣在控制元件中巢狀 HTML

宣告:FineUIMvc(基礎版)是免費軟體,本系列文章適用於基礎版。 使用者需求 有網友在《FineUI總群1》問這麼一個問題:怎麼把 HTML 巢狀在控制元件中? 這是很多剛學習 FineUIMvc 的網友經常問的問題,我想原因是對 WebForms 陷入太深,習慣了 FineUI 控制

FineUIMvc隨筆3不能忘卻的回發__doPostBack

 宣告:FineUIMvc(基礎版)是免費軟體,本系列文章適用於基礎版。 使用者反饋 有網友在官方論壇丟擲了這麼一個問題,似乎對 FineUIMvc 中的瀏覽器端與伺服器端的互動方式很有異議。 這裡面的關鍵詞就是:回發! 似乎一提到回發(__doPostBack),就讓人聯想到 Web

Activiti6.0 學習筆記1-動態設定任務執行人

最近公司一個管理類專案需要用到流程引擎,技術選型了很久,最終選擇activiti6.0.0.beta3作為本次的流程開發框架。本次開發週期只有兩個月,團隊內無人對activiti有很深的瞭解,故記錄使用過程中的問題。本次問題的需求:要求提交報銷資訊後,可以根據提交人的部門資訊

動態規劃系列1——動態規劃入門

一般的,我們常用的解決問題的方法有暴力解決法、分而治之、二分法、貪心法和動態規劃法。在你遇到一個問題怎麼想都想不出其解法的時候,很可能就需要用到動態規劃了;在你的題目中出現最優、最多、最好等字眼的時候,很可能可以使用動態規劃問題來解決了。 那麼什麼是動態規劃(Dynamic

srs程式碼學習1--listen建立過程

srs的服務偵聽的建立過程。 以rtmp服務為例 srs服務偵聽的建立依靠從上到下的三個類。分別是 SrsServer   SrsStreamListener   SrsTcpListener 埠偵聽過程為 1)main函式中呼叫全域性變數_srs_server的  li

Js面向物件隨筆1

1、物件的概念:在ECMAScript-262中,物件被定義為“無序屬性的集合,其屬性可以包含基本值,物件或者函式,那麼在JavaScript中,物件也無非就是由一些無序的Key-Value對組成,其中Value可以是基本值,物件或者函式”。 2、我們常用Object.pr