【问题标题】:Use Page.LoadTemplate and Pass Parameters使用 Page.LoadTemplate 并传递参数
【发布时间】:2020-05-24 03:08:18
【问题描述】:

我需要根据对象的类型将模板加载到 ASP.NET ListView。但是,我需要在加载之前将参数传递给 ItemTemplate。加载到列表视图中的项目模板是 .ascx 用户控件。

ITemplate template = Page.LoadTemplate("~/Controls/Questions/TrueFalse.ascx");
listView.ItemTemplate = template;

我尝试将template 转换为UserControlTrueFalse(加载的用户控件的类型),但都转换为null。

我需要传递一个带有信息的对象以供控件显示。例如,在这种情况下,问题是真/假问题,因此模板将传递一个 Question 对象,其中包含问题文本以及答案是真还是假。还会有其他问题类型,例如多项选择、简答等。每个问题都需要使用不同的模板显示。如何将信息传递给ListView 中的ItemTemplate

我一直在使用this solution 根据数据类型更改模板。我可以根据数据的类型显示不同的模板;我只是不知道如何在将数据传递给模板时将模板加载为列表视图项。

【问题讨论】:

    标签: asp.net listview itemtemplate


    【解决方案1】:

    Through this blog post,我发现秘密实际上在于检索绑定的项目,在列表视图的情况下,它是ListViewDataItem

    这行代码,在用户控件中,将检索绑定到ItemTemplate 的数据并将其添加到页面(在我的例子中,这是我需要访问的Question 对象):

    ((Question)(DataBinder.GetDataItem((ListViewDataItem)Container))).WhateverProperty
    

    当然,这个前端代码被<%# ... %> 标签包围。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-21
      • 2012-03-22
      • 2010-11-04
      • 2021-04-19
      • 2015-09-05
      • 2021-04-13
      • 2012-05-24
      • 2011-04-22
      相关资源
      最近更新 更多