GridView密技#4---使用ITemplate介面,動態新增「GridView樣版列(Template Row/模版列)」,內含VB與C#語法

HTML畫面設計,先作一個簡單的 GridView + SqlDataSource

完成後,我們在 GridView最後面的一行......透過程式「動態」新增一列,而且裡面包含了一個Web控制項

這個範例有點小麻煩,我是寫來給本書讀者當作補充的。

我的書裡面有五章(約250頁)討論 GridView的各種變化,讀者可以把這個範例,

當成第十一章的補充教材。....有點小難....

第十一章的部份範例,已經有公開過,都是「初學者不宜」的範例。

 -------------------------------------------------------------------------------------------------------------

先看看執行結果吧。

最右邊的 DropDownList,是程式動態加上去的。

而且是以「樣版列(Template Row / 模版列)」的方式附加上去

 

關於本範例, 微軟這篇文章,講得很詳細:

http://msdn.microsoft.com/zh-tw/library/cc438020(VS.71).aspx 

-------------------------------------------------------------------------------------------------------------

HTML畫面設計,先作一個簡單的 GridView + SqlDataSource

完成後,我們在 GridView最後面的一行......透過程式「動態」新增一列,而且裡面包含了一個Web控制項

 

關於這個程式,使用到 ITemplate Interface,可以參閱微軟的中文說明:http://msdn.microsoft.com/zh-tw/library/system.web.ui.itemplate.aspx

 -------------------------------------------------------------------------------------------------------------

後置程式碼(C#)如下:

    public class Add_GridViewTemplate : ITemplate
    {
        private DataControlRowType u_Type;
        private string column_title;

        public Add_GridViewTemplate(DataControlRowType type, string colname)
        {
            u_Type = type;
            column_title = colname;
        }

        public void InstantiateIn(System.Web.UI.Control container)
        {  // ITemplate只有一個 InstantiateIn()方法,此方法需要輸入一個控制項
            // 當實作Class時,定義子控制項和樣板所屬的 Control 物件。這些子控制項依次定義在內嵌樣板內。

            switch (u_Type)
            {
                case DataControlRowType.Header:  // GridView表頭
                    Literal literal1 = new Literal();
                    literal1.Text = column_title;
                    container.Controls.Add(literal1);
                    break;

                case DataControlRowType.DataRow:  // Gridview資料列
                    DropDownList ddl = new DropDownList();  //動態加入 DropDownList
                    ddl.ID = "DropDownList_Add";
                    ddl.Items.Add(new ListItem("-----請選擇------", ""));
                    ddl.Items.Add(new ListItem("子選項A", "a"));    // 左邊是Text,右邊是Value
                    ddl.Items.Add(new ListItem("子選項B", "b"));
                    ddl.Items.Add(new ListItem("子選項C", "c"));
                    container.Controls.Add(ddl);
                    break;

                default:
                    break;
            }
        }
    }


protected void Page_Load(object sender, EventArgs e)
    {
        TemplateField temp_f = new TemplateField();
        temp_f.ShowHeader = true;
        temp_f.HeaderTemplate = new Add_GridViewTemplate(DataControlRowType.Header, "<font color=yellow>動態加入的</font>");
        temp_f.ItemTemplate = new Add_GridViewTemplate(DataControlRowType.DataRow, "");
        GridView1.Columns.Add(temp_f);
    }

-------------------------------------------------------------------------------------------------------------

若要改成VB語法,請注意,修改的地方如下:

     Public Class Add_GridViewTemplate
        Implements ITemplate

        Private dcrType As DataControlRowType
        Private column_title As String

        Public Sub New(ByVal r_type As DataControlRowType, ByVal col_name As String)
            dcrType = r_type
            column_title = col_name
        End Sub

      ............................
    End Class

 

 

2008/12/25補充:

 

本範例有一些 Bug,我會在下一篇文章進行補救

請看:GridView密技#5---(修改/補強版)使用ITemplate介面,動態新增「GridView樣版列(Template Row/模版列)」

 

 

 

 

我將思想傳授他人, 他人之所得,亦無損於我之所有;

猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson

寫信給我,不要私訊 --  mis2000lab (at) yahoo.com.台灣  或  school (at) mis2000lab.net



ASP.NET遠距教學、線上課程(Web Form + MVC)。 第二門 課程「四折」-- 以MVC課程 作優惠。
第一天課程, "完整" 試聽。  如不滿意  全額退費!
................   facebook社團   https://www.facebook.com/mis2000lab   ......................

................  YouTube (ASP.NET) 線上教學影片  http://goo.gl/rGLocQ

*********************************************************************************************

*** ASP.NET MVC線上課程 第一天 免費看 (5.5小時) *** 

************************************************************(歡迎索取,免費申請)*****

 

Blog文章 "附的範例" 無法下載,請看 這裡 ...... https://dotblogs.com.tw/mis2000lab/2016/03/14/2008_2015_mis2000lab_sample_download

請看我們的「售後服務」範圍(嚴格認定)

......................................................................................................................................................

...................................................................................................................................................... 

[遠距教學、教學影片] ASP.NET (Web Form) 課程 上線了!MIS2000Lab.主講

事先錄製好的影片,並非上課時側錄!   觀看影片時,有如我「一對一」跟您面對面講課

 

    MIS2000 Lab.  線上教學影片(YouTube) **免費觀賞**