日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

动态创建模板列并绑定数据(GridView,Repeater,DataGrid)

發(fā)布時間:2025/1/21 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 动态创建模板列并绑定数据(GridView,Repeater,DataGrid) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

要創(chuàng)建動態(tài)模板,請創(chuàng)建以后需要時可實例化的模板類。

創(chuàng)建模板類

  • 創(chuàng)建實現?System.Web.UI.ITemplate?接口的新類。

  • 您也可以將值傳遞到類的構造函數,類可以使用該值來確定要創(chuàng)建的模板類型(ItemTemplate、AlternatingItemTemplate?

  • 注意

    將模板類型傳遞到構造函數的類型安全方法是向構造函數添加類型為?ListItemType?的參數。ListItemType 枚舉為 Repeater、DataList 和其他控件定義可能的模板類型。

  • 在類中,實現?InstantiateIn?方法,該方法是 ITemplate 接口的成員。

    此方法提供將文本實例和控件實例插入指定容器的方法。

  • 在 InstantiateIn 方法中,為模板項創(chuàng)建控件,設置其屬性,然后將它們添加到父級的 Controls 集合。

    您可以通過傳遞到 InstantiateIn 方法的引用訪問父控件。

    注意

    不能直接向 Controls 集合添加靜態(tài)文本,但可以創(chuàng)建類似?Literal?控件或?LiteralControl?控件的控件,設置它們的 Text 屬性,然后向父集合添加這些控件。

    下面的代碼示例闡釋完整的模板類,該類顯示某些靜態(tài)文本(“Item number:”)和計數器。計數器是名為?itemcount?的靜態(tài)值(在 Visual Basic 中為共享值),在每次創(chuàng)建新項時都會遞增。該類定義一個接受 ListItemType 枚舉值以指示所創(chuàng)建模板類型的顯式構造函數。根據所創(chuàng)建的模板類型,代碼創(chuàng)建不同類型的控件并將其添加到父控件的 Controls 集合。最終結果是一個 HTML 表,其中的交替項模板具有不同的背景色。

    public class MyTemplate : ITemplate {static int itemcount = 0;ListItemType templateType;public MyTemplate(ListItemType type){templateType = type;}public void InstantiateIn(System.Web.UI.Control container){Literal lc = new Literal();switch (templateType){case ListItemType.Header:lc.Text = "<TABLE border=1><TR><TH>Items</TH></TR>";break;case ListItemType.Item:lc.Text = "<TR><TD>Item number: " + itemcount.ToString() +"</TD></TR>";break;case ListItemType.AlternatingItem:lc.Text = "<TR><TD bgcolor=lightblue>Item number: " +itemcount.ToString() + "</TD></TR>";break;case ListItemType.Footer:lc.Text = "</TABLE>";break;}container.Controls.Add(lc);itemcount += 1;} }

    使用動態(tài)模板

    有了可用的動態(tài)模板,就可以在代碼中將其實例化了。

    創(chuàng)建動態(tài)模板

  • 創(chuàng)建動態(tài)模板的實例,如果合適的話,將一個項類型值傳遞給它。

  • 將該實例分配給模板化控件的模板屬性之一,如 ItemTemplate、AlternatingItemTemplate 和 HeaderTemplate 屬性。

    下面的代碼示例演示如何與 Repeater 控件一起使用動態(tài)模板。在此示例中,在加載頁時,而且是在控件綁定到數據源之前,將模板實例化。

    private void Page_Load(object sender, System.EventArgs e) {SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Northwind"].ConnectionString);SqlDataAdapter sqlDataAdapter1;DataSet dsCategories1;sqlDataAdapter1 = new SqlDataAdapter("SELECT CategoryID, CategoryName FROM Categories", conn);dsCategories1 = new DataSet();Repeater1.HeaderTemplate = new MyTemplate(ListItemType.Header);Repeater1.ItemTemplate = new MyTemplate(ListItemType.Item);Repeater1.AlternatingItemTemplate =new MyTemplate(ListItemType.AlternatingItem);Repeater1.FooterTemplate = new MyTemplate(ListItemType.Footer);sqlDataAdapter1.Fill(dsCategories1, "Categories");Repeater1.DataSource = dsCategories1.Tables["Categories"];Repeater1.DataBind(); }

    要將數據綁定添加到動態(tài)模板,必須執(zhí)行如下操作:

    • 將數據綁定事件處理程序添加到您在模板中創(chuàng)建的控件。

    • 創(chuàng)建您要被綁定的處理程序。在該處理程序中,獲取您要被綁定的數據并將其分配給要被綁定控件的相應屬性。

    添加數據綁定事件處理程序

    • 在動態(tài)模板中創(chuàng)建控件后,添加對控件的 DataBinding 事件的事件處理程序的引用。(接下來您將創(chuàng)建事件處理程序)。

      下面的代碼示例演示了模板類的一部分,該部分闡釋了如何將新創(chuàng)建的控件綁定到名為?TemplateControl_DataBinding?的方法:

      ?

      case?ListItemType.Item:
      ??
      lc.Text?=?"<TR><TD>";
      lc.DataBinding?+=?new?EventHandler(TemplateControl_DataBinding);
      break;

      在上例中,您添加到文本控件的 Text 屬性的文本不同于前一示例。該示例只包含了項模板的表行和單元格的開頭。您將在數據綁定事件處理程序中填寫單元格和行。

    下一步是創(chuàng)建事件處理程序,在控件處于數據綁定狀態(tài)時將調用該事件處理程序。

    二、在我自己的項目中使用的控件是GridView,動態(tài)模板列中使用的是LinkButton控件,創(chuàng)建的過程大概與上面相同,如下:

    創(chuàng)建模板類?

    public class GaugeValueTemplate : ITemplate{#region ITemplate 成員public void InstantiateIn(Control container){LinkButton lbGaugeMakeValue = new LinkButton();lbGaugeMakeValue.ID = "LB_GaugeMakeValue";lbGaugeMakeValue.DataBinding += new EventHandler(lbGaugeMakeValue_DataBinding);lbGaugeMakeValue.CommandName = "GaugeMakeValue";container.Controls.Add(lbGaugeMakeValue);}void lbGaugeMakeValue_DataBinding(object sender, EventArgs e){LinkButton lbGaugeMakeValue = (LinkButton)sender;GridViewRow container = (GridViewRow)lbGaugeMakeValue.NamingContainer;//綁定GaugeMakeValue字段的值lbGaugeMakeValue.Text = DataBinder.Eval(container.DataItem, "GaugeMakeValue").ToString();}

    使用模板?

    TemplateField GaugeMakeValueColumn = new TemplateField();GaugeMakeValueColumn.HeaderText = "指標制定值";GaugeMakeValueColumn.ItemTemplate = new GaugeValueTemplate();

    從這里可以看出GridView與Repeater控件中的區(qū)別在于:

    Repeater:RepeaerItem container = (RepeaterItem)lc.NamingContainer;
    ??? lc.Text += DataBinder.Eval(container.DataItem, "CategoryName");

    GridView:GridViewRow?container?=?(GridViewRow)lbGaugeMakeValue.NamingContainer;

    ???????????//綁定GaugeMakeValue字段的值
    ???????????lbGaugeMakeValue.Text?=?DataBinder.Eval(container.DataItem,?"GaugeMakeValue").ToString();

    三、關于DataGrid的方法,可參見http://www.cnblogs.com/lovecherry/archive/2005/03/25/125526.html

  • ?

    為 DataBinding 事件創(chuàng)建處理程序

  • 創(chuàng)建屬于模板類的方法,它還是該類的其他方法(如 InstantiateIn)的對等方法。處理程序的名稱必須與早期綁定事件時使用的名稱相匹配。該方法應該具有以下簽名:

    private?void?TemplateControl_DataBinding(object?sender,
    System.EventArgs?e)

    ?

  • 通過執(zhí)行以下操作獲取對包含數據的 DataItem 對象的引用:

  • 獲取對模板項的引用。創(chuàng)建變量來保存該引用,然后將從控件的?NamingContainer?屬性獲取的值分配給它。

  • 使用該引用來獲取命名容器的(模板項的)DataItem?屬性。

  • 從 DataItem 對象提取單個數據元素(例如數據列),并使用它來設置您要綁定的控件的屬性。

    下面的代碼示例闡釋在動態(tài)模板內執(zhí)行數據綁定的一種方式。它演示了在 Repeater 控件的模板中創(chuàng)建的 Literal 控件的完整數據綁定事件處理程序。

  • private void TemplateControl_DataBinding(object sender, System.EventArgs e) {Literal lc;lc = (Literal)sender;RepeaterItem container = (RepeaterItem)lc.NamingContainer;lc.Text += DataBinder.Eval(container.DataItem, "CategoryName");lc.Text += "</TD></TR>"; } using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web.UI; using System.Web.UI.WebControls;namespace Xys.Remp.WF.UI {public class WorkFlowTraceTemplate : ITemplate{ListItemType templateType;public WorkFlowTraceTemplate(ListItemType type){templateType = type;}public void InstantiateIn(System.Web.UI.Control container){Literal lc = new Literal();switch (templateType){case ListItemType.Header:lc.Text = "<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\" class=\"addformcontainer\"><tr><td>節(jié)點編號</td><td>節(jié)點名稱</td><td>處理人</td><td>審批意見</td><td>時間</td></tr>";break;case ListItemType.Item:lc.DataBinding += new EventHandler(TemplateControl_DataBinding);break;break;case ListItemType.Footer:lc.Text = "</table>";break;}container.Controls.Add(lc);}private void TemplateControl_DataBinding(object sender, System.EventArgs e){Literal lc;lc = (Literal)sender;RepeaterItem container = (RepeaterItem)lc.NamingContainer;lc.Text = " <tr><td>" + DataBinder.Eval(container.DataItem, "NodeID") + "</td><td>" + DataBinder.Eval(container.DataItem, "NodeName") + "</td><td>" + DataBinder.Eval(container.DataItem, "CurrentPersonName") + "</td><td>" + DataBinder.Eval(container.DataItem, "Remark") + "</td><td>" + DataBinder.Eval(container.DataItem, "HandleTime") + "</td></tr>";}} }

    以上文章參考http://www.cnblogs.com/50614090/archive/2011/08/19/2145399.html

    http://www.cnblogs.com/guiliangfeng/archive/2009/04/19/1439235.html

    ?

    總結

    以上是生活随笔為你收集整理的动态创建模板列并绑定数据(GridView,Repeater,DataGrid)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 国产精品无码成人网站视频 | 欧美一级在线播放 | 真实新婚偷拍xxxxx | 亚洲图片欧美在线看 | 调教91 | 久久av网站 | 成年人精品视频 | 日本一本在线 | 中文字幕一区二区三区乱码人妻 | 天天干天天玩 | 免费成人深夜夜国外 | 91国产在线免费观看 | 俺啪也 | 中文字幕av网址 | 日本美女黄色一级片 | 免费无码av片在线观看 | 成年人的毛片 | 日韩一级在线观看 | 亚洲精品影视 | 中文字幕一区二区人妻痴汉电车 | 成年人一级黄色片 | 久久亚洲精品国产精品黑人v | 欧美三日本三级少妇三级99观看视频 | 日韩av不卡一区 | 日韩视频成人 | 蜜臀精品 | 在线日韩亚洲 | 欧美一区二区三区在线观看 | 少妇一晚三次一区二区三区 | www.欧美亚洲 | 男人的天堂国产 | 精品人妻无码中文字幕18禁 | 国产午夜影院 | 日韩国产欧美一区二区 | 国模一区二区 | 无码人妻精品一区二区蜜桃色欲 | 国产情趣视频 | 午夜久久视频 | 在线观看免费日韩av | 成人免费公开视频 | 蜜桃中文字幕 | 中文字幕+乱码+中文字幕明步 | 久久久久久久久久久久久久av | 亚洲国产精品18久久久久久 | 欧美精品手机在线 | 少妇人妻偷人精品一区二区 | 校园春色自拍偷拍 | 久久综合免费视频 | 欧美精品福利 | 成人99视频 | 国产精品婷婷午夜在线观看 | 99精品欧美一区二区三区 | 欧美一区视频在线 | 国产免费一区二区三区四区五区 | 成人网久久 | 大奶子情人| 午夜羞羞影院 | 欧美国产精品一区二区三区 | 亚洲国产无码久久 | 森泽佳奈中文字幕 | 麻豆传媒在线观看 | 91色视频在线 | 欧美大色一区 | 亚洲精品乱码久久久久久9色 | 亚洲一区久久 | 亚洲第一天堂av | 女人下面流白浆的视频 | 制服av网| 国产精品视频第一页 | 欧美日韩成人在线 | 男女网站视频 | 丰满人妻一区二区三区免费视频 | 色老头一区二区三区在线观看 | 国产欧美精品区一区二区三区 | 狠狠插综合 | 麻豆传媒网站 | 在线观看成人免费 | 久久偷看各类女兵18女厕嘘嘘 | 91一区二区在线观看 | 欧美性一级片 | 国产牛牛 | 精品在线免费观看视频 | aaaa视频| www.一区二区| 中文字幕在线精品 | www.五月天婷婷 | 三级av网 | 国产精品女教师 | 无码精品国产一区二区三区 | 超碰狠狠操 | 日韩欧美一区二区三区在线观看 | japanese国产打屁股网站 | 99资源| 亚洲欧美日韩一区二区三区在线观看 | 黄色大片日本 | 麻豆系列在线观看 | 天天射夜夜骑 | 欧美特级黄色片 | 殴美一级特黄aaaaaa |