asp.net - 在 ASP.NET Repeater 中动态添加控件

标签 asp.net controls repeater

我发现自己有一个转发器控件,该控件正在将数据绑定(bind)到 xml 文档。我的客户现在请求重复器的文本框可以是文本框或复选框。

我似乎找不到一种简单的方法来基本上执行以下操作:

if ((System.Xml.XmlNode)e.Item.DataItem.Attributes["type"] == "text")
<asp:TextBox runat="server" ID="txtField" Text='<%#((System.Xml.XmlNode)Container.DataItem).InnerText %>' CssClass="std"></asp:TextBox>
else
<asp:CheckBox runat="server" ID="txtField" Text='<%#((System.Xml.XmlNode)Container.DataItem).InnerText %>' CssClass="std"></asp:TextBox>

有没有一种好的方法可以扩展我当前的实现而不必重写逻辑。如果我可以通过“OnItemDataBound”注入(inject)控件,那也很好。但我似乎无法让它发挥作用

最佳答案

在转发器中,放置一个面板,然后为转发器的数据绑定(bind)事件创建一个事件处理程序,并以编程方式创建 TextBox 或 CheckBox,并将其添加为面板的子控件。您应该能够从事件参数中获取 DataItem,以获取“type”属性或值等信息,以提供 Text 属性或 css 信息等。

关于asp.net - 在 ASP.NET Repeater 中动态添加控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/128083/

相关文章:

com - 如何在VB6用户控件中实现高级自定义属性?

repeater - 如何为中继器中的属性创建别名?

c# - ASP.NET MVC5 删除 API 错误的 html 响应

python - 使用 Python 在 SSL 站点上登录、导航和提取文本?

c# - 如何在 .net 中打开 .xlt 文件?

vb.net - 无法查看窗体上的 dotnetbar 控件

c# - 使用 WPF 浏览器控件时如何重叠 BeforeNavigate 2?

c# - 在转发器页脚中查找控件为文本框返回 null

javascript - 以声明方式设置 HTML 链接的 jQuery.Data 属性

ASP.NET 4.0 DropDownList 在文本中带有单引号