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

聲明:FineUIMvc(基礎版)是免費軟件,本系列文章適用於基礎版。html

 

《FineUIMvc隨筆》目錄

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

FineUIMvc隨筆(2)怎樣在控件中嵌套 HTML瀏覽器

FineUIMvc隨筆(3)不能忘卻的回發(__doPostBack)框架

FineUIMvc隨筆(4)自定義回發參數與自定義回發佈局

FineUIMvc隨筆(5)UIHelper是個什麼梗?spa

FineUIMvc隨筆(6)對比WebForms和MVC中表格的數據庫分頁3d

FineUIMvc隨筆(7)擴展通知對話框(顯示多個不重疊)code

...orm

 

 

 

 

 

用戶需求

 

用戶但願實現動態建立表格列,在 WebForms 中,咱們經過在 Page_Init 中建立列來實現:htm

 

可是在 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

相關文章
相關標籤/搜索