具有多个模板的 ASP Repeater 控件

2023-12-01

如何拥有具有多个模板的转发器控件,其中选择的模板基于项目的类型?

这就是我目前所拥有的:

我的复读班:

[ToolboxData("<{0}:LifestreamRepeater runat=server>")]
public class LifestreamRepeater : Repeater
{

    [PersistenceMode(PersistenceMode.InnerProperty)]
    public ITemplate TwitterTemplate {get; set;}


    protected override void OnDataBinding(EventArgs e)
    {
        //base.OnDataBinding(e);
        foreach (var item in (IEnumerable<LifestreamItem>)this.DataSource)
        {
            if (item is LifestreamTwitterItem)
            {
                LifestreamRepeaterItem ri = new LifestreamRepeaterItem(item);
                TwitterTemplate.InstantiateIn(item);
            }
            else
            {
                ItemTemplate.InstantiateIn(item);
            }
        }

    }
}

和前端:

        <lfs:LifestreamRepeater runat="server" ID="repeater1">
            <TwitterTemplate>
                <div class="Lifestream Twitter Item">
                    <h4> <%# DataBinder.Eval(Container.DataItem, "Title")%> </h4>
                    <p>  <%# DataBinder.Eval(Container.DataItem, "Body")%> </p>
                </div>
            </TwitterTemplate>
            <ItemTemplate>
                <div class="Lifestream Item">
                    <h2> <%# DataBinder.Eval(Container.DataItem, "Title")%> </h2>
                    <p>  <%# DataBinder.Eval(Container.DataItem, "Body")%> </p>
                </div>
            </ItemTemplate>
        </lfs:LifestreamRepeater>

然后,我将转发器控件绑定到 LifestreamItem 的 IEnumerable,它是多个不同社交网络帖子类型的基类,因此可能有 TwitterLifestreamItem 和 VimeoLifestreamItem,我希望转发器根据数据项选择不同的模板,具有不同的可能值。


看来解决方案是重写 DataBind 方法,如下所示:

    public override void DataBind()
    {
        foreach (var item in (IEnumerable<LifestreamItem>)this.DataSource)
        {
            if (item is LifestreamTwitterItem)
            {
                TwitterTemplate.InstantiateIn(item); // instantiate inside the item which is also a control.
            }
            else
            {
                ItemTemplate.InstantiateIn(item);
            }
            item.DataBind(); // bind the item
            Controls.Add(item); // add the item to the repeater
        }
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有多个模板的 ASP Repeater 控件 的相关文章

  • Signalr 在生产服务器中总是陷入长轮询

    当我在服务器中托管应用程序时 它会检查服务器端事件并始终回退到长轮询 服务器托管环境为Windows Server 2012 R1和IIS 7 5 无论如何 我们是否可以解决这个问题 https cloud githubuserconten
  • 如何在 Unity 中从 RenderTexture 访问原始数据

    问题的简短版本 我正在尝试访问 Unity 中 RenderTexture 的内容 我一直在使用 Graphics Blit 使用自己的材质进行绘制 Graphics Blit null renderTexture material 我的材
  • 嵌入式系统中的malloc [重复]

    这个问题在这里已经有答案了 我正在使用嵌入式系统 该应用程序在 AT91SAMxxxx 和 cortex m3 lpc17xxx 上运行 我正在研究动态内存分配 因为它会极大地改变应用程序的外观 并给我更多的力量 我认为我唯一真正的路线是为
  • fgets() 和 Ctrl+D,三次才能结束?

    I don t understand why I need press Ctrl D for three times to send the EOF In addition if I press Enter then it only too
  • Cygwin 下使用 CMake 编译库

    我一直在尝试使用 CMake 来编译 TinyXML 作为一种迷你项目 尝试学习 CMake 作为补充 我试图将其编译成动态库并自行安装 以便它可以工作 到目前为止 我已经设法编译和安装它 但它编译成 dll 和 dll a 让它工作的唯一
  • 如何在我的应用程序中使用 Windows Key

    Like Windows Key E Opens a new Explorer Window And Windows Key R Displays the Run command 如何在应用程序的 KeyDown 事件中使用 Windows
  • C# 用数组封送结构体

    假设我有一个类似于 public struct MyStruct public float a 我想用一些自定义数组大小实例化一个这样的结构 在本例中假设为 2 然后我将其封送到字节数组中 MyStruct s new MyStruct s
  • c# Asp.NET MVC 使用FileStreamResult下载excel文件

    我需要构建一个方法 它将接收模型 从中构建excel 构建和接收部分完成没有问题 然后使用内存流导出 让用户下载它 不将其保存在服务器上 我是 ASP NET 和 MVC 的新手 所以我找到了指南并将其构建为教程项目 public File
  • 基于范围的 for 循环中的未命名循环变量?

    有没有什么方法可以不在基于范围的 for 循环中 使用 循环变量 同时也避免编译器发出有关未使用它的警告 对于上下文 我正在尝试执行以下操作 我启用了 将警告视为错误 并且我不想进行像通过在某处毫无意义地提及变量来强制 使用 变量这样的黑客
  • 按字典顺序对整数数组进行排序 C++

    我想按字典顺序对一个大整数数组 例如 100 万个元素 进行排序 Example input 100 21 22 99 1 927 sorted 1 100 21 22 927 99 我用最简单的方法做到了 将所有数字转换为字符串 非常昂贵
  • .Net Core / 控制台应用程序 / 配置 / XML

    我第一次尝试使用新的 ConfigurationBuilder 和选项模式进入 Net Core 库 这里有很多很好的例子 https docs asp net en latest fundamentals configuration ht
  • A* 之间的差异 pA = 新 A;和 A* pA = 新 A();

    在 C 中 以下两个动态对象创建之间的确切区别是什么 A pA new A A pA new A 我做了一些测试 但似乎在这两种情况下 都调用了默认构造函数 并且仅调用了它 我正在寻找性能方面的任何差异 Thanks If A是 POD 类
  • Windows 窗体不会在调试模式下显示

    我最近升级到 VS 2012 我有一组在 VS 2010 中编码的 UI 测试 我试图在 VS 2012 中启动它们 我有一个 Windows 窗体 在开始时显示使用 AssemblyInitialize 属性运行测试 我使用此表单允许用户
  • 是否有比 lex/flex 更好(更现代)的工具来生成 C++ 分词器?

    我最近将源文件解析添加到现有工具中 该工具从复杂的命令行参数生成输出文件 命令行参数变得如此复杂 以至于我们开始允许它们作为一个文件提供 该文件被解析为一个非常大的命令行 但语法仍然很尴尬 因此我添加了使用更合理的语法解析源文件的功能 我使
  • 我的 strlcpy 版本

    海湾合作委员会 4 4 4 c89 我的程序做了很多字符串处理 我不想使用 strncpy 因为它不会终止 我不能使用 strlcpy 因为它不可移植 只是几个问题 我怎样才能让我的函数正常运行 以确保它完全安全稳定 单元测试 这对于生产来
  • 用 C 实现 Unix shell:检查文件是否可执行

    我正在努力用 C 语言实现 Unix shell 目前正在处理相对路径的问题 特别是在输入命令时 现在 我每次都必须输入可执行文件的完整路径 而我宁愿简单地输入 ls 或 cat 我已经设法获取 PATH 环境变量 我的想法是在 字符处拆分
  • 将日期参数传递给对 MVC 操作的 ajax 调用的安全方法

    我有一个 MVC 操作 它的参数之一是DateTime如果我通过 17 07 2012 它会抛出一个异常 指出参数为空但不能有空值 但如果我通过01 07 2012它被解析为Jan 07 2012 我将日期传递给 ajax 调用DD MM
  • asp.net cookie、身份验证和会话超时

    我有一个使用表单身份验证的 asp net 网站 我在会话中保留一些信息 例如用户名 用户 ID 电子邮件等 我通过在身份验证 cookie 上设置较长的到期日期来允许用户保持登录网站的状态 因此 当用户仍处于身份验证状态时 会话过期的情况
  • 如何构建印度尼西亚电话号码正则表达式

    这些是一些印度尼西亚的电话号码 08xxxxxxxxx 至少包含 11 个字符长度 08xxxxxxxxxxx 始终以 08 开头 我发现这个很有用 Regex regex new Regex 08 0 9 0 9 0 9 0 9 0 9
  • ListDictionary 类是否有通用替代方案?

    我正在查看一些示例代码 其中他们使用了ListDictionary对象来存储少量数据 大约 5 10 个对象左右 但这个数字可能会随着时间的推移而改变 我使用此类的唯一问题是 与我所做的其他所有事情不同 它不是通用的 这意味着 如果我在这里

随机推荐

  • 使用RxJava 2和Retrofit 2,适配器版本问题

    我在 Android Studio 中的现有应用程序模块中添加了一个新的库模块 主要区别是添加了 RxJava 2 和 Retrofit 2 更新新模块的 build gradle 后 我开始收到下一个错误 错误 任务 app transf
  • 对象数组中属性值的递归数组

    我需要的是一个属性值数组 从对象数组中递归收集 这就是我的意思 const regions name Europe subRegions name BeNeLux territories code NL name Netherlands c
  • 如何在 Fortran 中正确地终结对象?

    我有一个解析文本文件的对象 这是我的主要程序 program main use Parser class implicit none type Parser Parser call Parser ProcessFile data txt c
  • 如何在应用程序中获取 Dart 和 Flutter 版本

    How to log 的版本Dart and Flutter在应用程序内 like String dartVersion log dart dartVersion 要执行 dart 版本 您可以使用 Platform 类直接返回 dart
  • 如何在GWT页面中显示java小程序?

    我可能在这里遗漏了一些简单的东西 但我在其他地方找不到答案 我只想在我的 GWT 代码中显示一个小程序 操作系统 Windows XP Java JDK 1 6 0 10 其他 GWT GWT Ext 2 0 5 这是小程序 显然是为了测试
  • 我正在尝试使用命令 sudo npm install --g expo-cli 请注意我尝试 --force 全局重新安装 expo-cli 软件包

    bosshoc MBP de BOSS meals app sudo npm install g expo cli Password npm ERR code ENOTEMPTY npm ERR syscall rename npm ERR
  • Android WebView - 拦截点击

    我编写了一个带有 WebView 的简单 helloworld 应用程序 该应用程序在我的 asset 文件夹中的 simple html 页面上有 CNN 的链接 a href http cnn com cnn com a 如何捕获对我的
  • 合并两个都有联结表的 SQLite 数据库

    我有两个 SQLite 数据库 它们都有连接表来描述一对多关系 现在 这两个数据库需要通过某种导入 导出机制合并为一个数据库 并仍然保留关系 我试图转储DB2 with dump然后将其加载回DB1 with read 但总是得到PRIMA
  • 如何制作克隆或扩展模式

    我有多个显示器 虚拟 真实 默认情况下我想从我的程序将其置于克隆 双模式 有人可以建议我如何实现这一目标吗 我对这个世界很陌生 对于这个基本问题感到抱歉 即使任何文档或任何链接都将非常值得赞赏 萨博吉特 Extend SetDisplayC
  • MSP430G2553 定时器间隔 [关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 在阅读了大约五遍文字并进行谷歌搜索后 我决定寻求帮助 我目前正在使用 Timer A 中断以 1 秒 10 秒 1 分钟的间隔一次打开 关闭两个 LED 默认程序每秒都会打开 关闭 L
  • 我可以阻止特定数据成员被反序列化吗?

    我有这样的数据合同 DataContract class MyDC DataMember public string DM1 DataMember public string DM2 DataMember public string DM3
  • QTP 中的 RO 属性和 TO 属性有什么区别?

    在QTP中每个测试对象都支持以下方法 GetRoProperty GetToProperty SetToProperty GetToProperties 和有什么区别RO 财产和TO property 为什么我只能设置一个TO 财产而不是R
  • 如果 id 匹配,则从 mysql 选择行

    我想从 mysql 中选择与特定 id 匹配的行 我想获取ID是否匹配的结果 如果数据库中不存在该ID 则不应该执行任何操作 我这样运行 q SELECT FROM entries where id 1 result mysql query
  • Visual Studio 2017 - Git 因致命错误而失败

    我使用的是 Visual Studio 2017 Community Edition CE 并且已登录我的 Microsoft 帐户并连接到 VSTS 我可以看到我的所有项目和存储库 但是当我尝试拉 取 推送任何更改时 我收到以下错误 Er
  • 设置包括 Wamp 上 PEAR 的路径

    安装 PEAR 并按照上的说明进行操作http www phpunit de manual current en installation html pear config set auto discover 1 pear install
  • 从资源加载dll库到当前域(在主exe文件中嵌入dll)

    我尝试使用以下代码在运行时加载 dll 库 这样我就不必向用户提供大量 dll 文件以及主可执行文件 我已将所有 dll 文件作为嵌入式资源包含在内 并且在参考部分中我已包含它们并设置了复制本地属性为 false 但这里的问题是 1 所有d
  • 在 Firebase 中检索嵌套数据 - Android

    我刚刚进入 firebase 和 android 的世界 我按照在线教程设置和获取非嵌套数据并将其显示在列表视图中 如下所示 数据之前 mListView ListView findViewById R id ListView final
  • UIView 背景颜色影响 iOS 5 中的触摸

    我有一个在 iOS 4 中运行的具有子类触摸响应的自定义视图 在 iOS 5 上 当沿着视图的底部边缘触摸时 这些触摸根本不会响应 if视图的背景颜色设置为clearColor 我一直无法追踪到这一点 但有谁知道 iOS 5 是否改变了视图
  • 如何让 perf stat 支持 KVM 中的“分支”、“分支未命中”等硬件事件

    我想通过 分支未命中 硬件事件来评估一个进程的性能 但是当我使用 perf stat 获取 分支未命中 数据时 它总是返回 0 因为我的操作系统位于 KVM 中 因为我拿一台真机来做测试比较麻烦 所以我想知道当我在 KVM 中时 有什么方法
  • 具有多个模板的 ASP Repeater 控件

    如何拥有具有多个模板的转发器控件 其中选择的模板基于项目的类型 这就是我目前所拥有的 我的复读班 ToolboxData lt 0 LifestreamRepeater runat server gt public class Lifest