惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog
Hugging Face - Blog
Hugging Face - Blog
月光博客
月光博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
人人都是产品经理
人人都是产品经理
博客园 - Franky
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
P
Proofpoint News Feed
F
Fortinet All Blogs
H
Help Net Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
Visual Studio Blog
Jina AI
Jina AI
J
Java Code Geeks
Blog — PlanetScale
Blog — PlanetScale
S
SegmentFault 最新的问题
D
DataBreaches.Net
T
The Blog of Author Tim Ferriss
美团技术团队
博客园 - 司徒正美
宝玉的分享
宝玉的分享
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Apple Machine Learning Research
Apple Machine Learning Research

博客园 - e动力

asp.net的简单问题 - e动力 - 博客园 c#中如何截取字符串啊 - e动力 - 博客园 后台生成前台htm树(asp.net c) - e动力 - 博客园 在运行时自定义 DataList 项 允许用户选择 DataList Web 服务器控件中的项 C#版的网站新闻发布系统 软件设计师题型预测 计算机与软件工程知识 软件设计 计算机与软件工程知识 软件设计师考试要求 计算机技术与软件专业技术资格(水平)考试 FSO组件之文件夹操作 通过模板生成静态html页面示例 处理FSO的函数,方便生成HML文件 软件设计师大纲变化 2005年5月软件设计师试题及答案 软件设计师考试大纲(2004版) ASP.NET中读取XML文件
在 DataList Web 服务器控件中动态创建模板
e动力 · 2005-08-19 · via 博客园 - e动力

模板不必在设计时进行分配。在某些情况下,可能能够在设计时布局模板,但是知道在运行时所做的更改非常广泛,以至于在运行时加载新的模板反而可简化编程。在其他情况下,可能有几个可能的模板,但要在运行时更改模板。

策略之一是创建其中带有基本模板布局的模板文件,即模板定义文件。若要在运行时加载模板,请使用 Page.LoadTemplate 方法。此方法从文件中读取模板定义,并创建 ITemplate 接口对象。然后可将此对象分配到 DataList 中的任何模板。

创建模板定义文件

  1. 在“项目”菜单上单击“添加新项”。
  2. 在“添加新项”对话框中,选择“文本文件”。将该文件命名为带有“.ascx”扩展名。
  3. 将模板定义语句添加到该模板文件中,然后保存它。

    下面列出的内容创建一个模板,它显示字符串“Name:”,后面跟有绑定到 DataList 的数据源的“LastName”字段。

    <!-- Visual Basic -->
    <%@ Language = "VB" %>
    Name: <b> <%# DataBinder.Eval(Container, "DataItem.LastName") %> </b>
    
    <!-- Visual C# -->
    <%@ Language = "C#" %>
    Name: <b> <%# DataBinder.Eval(Container, "DataItem.LastName") %> </b>

动态创建模板

  • 向 Web 窗体页中添加代码以使用 Page.LoadTemplate 方法加载模板。

    以下代码使用 Page_Load 事件处理程序来加载按上述过程创建的名称为 NewTemplate.ascx 的模板。

    ' Visual Basic 
    Private Function CreateDataSource() As DataTable
       Dim dt As DataTable = New DataTable()
       dt.Columns.Add("LastName", Type.GetType("System.String"))
       dt.Rows.Add(New Object() {"Smith"})
       dt.Rows.Add(New Object() {"Jones"})
       dt.Rows.Add(New Object() {"Clark"})
       Return dt
    End Function
    
    Protected Sub Page_Init(ByVal Sender As System.Object, _
    ByVal e As System.EventArgs) Handles MyBase.Init
       InitializeComponent()
       If (Not Page.IsPostBack) Then
          DataList1.AlternatingItemTemplate = _
          Page.LoadTemplate("NewTemplate.ascx")
       End If
    End Sub
    
    Private Sub Page_Load(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles MyBase.Load
       'Put user code to initialize the page here
       If (Not Page.IsPostBack) Then
          DataList1.DataSource = CreateDataSource()
          DataList1.DataBind()
       End If
    End Sub
    
    // C#
    private DataTable CreateDataSource()
    {
       DataTable dt = new DataTable();
       dt.Columns.Add("LastName", Type.GetType("System.String"));
       dt.Rows.Add(new object[] {"Smith"});
       dt.Rows.Add(new object[] {"Jones"});
       dt.Rows.Add(new object[] {"Clark"});
       return dt;
    }
    
    private void Page_Init(object sender, EventArgs e)
    {
       InitializeComponent();
       DataList1.AlternatingItemTemplate = 
       Page.LoadTemplate("NewTemplate.ascx");
    }
    
    private void Page_Load(object sender, System.EventArgs e)
    {
       // Put user code to initialize the page here
       if (!Page.IsPostBack)
       {
          DataList1.DataSource = CreateDataSource();
          DataList1.DataBind();
       }
    }