在运行时根据用户输入创建Repeater模板

时间:2012-06-06 19:57:03

标签: c# asp.net .net

是否可以以某种方式为转发器动态创建ItemTemplate?

我正在尝试使用转发器,因为它允许最大程度的控制,但我的一个要求是让我重新考虑。

我基本上通过Web服务进行了许多SQL查询。我希望他们能够通过单选按钮选择“部件”,“产品”或“包”,在文本框中输入搜索词,以及其他一些信息和页面,而不是让用户输入整个查询。返回他们想要的结果。我主要完成了这个,RadioButtons控制逻辑,我将查询设置为接受来自文本框的输入作为带通配符的搜索项。唯一的问题是我正在努力与转发器控制。问题是每个表都有不同数量的列,它们有不同的名称,所以做一个 <td><%# DataBinder.Eval(Container,\"DataItem.Description\") %></td> 在ItemTemplate中是不可能的(我不知道在绑定时间中使用3个(可能更多的未来)模板之一)

我尝试使用文字根据代码隐藏中的逻辑传递我想要的内容,但是我无法传递内联函数,而且我无法根据之前的问题将如何执行此操作。< / p>

我一直在阅读MSDN参考资料,看起来如果我学习DataList控件会让事情变得更容易,但是如果有一个简单的方法可以使用转发器,我宁可不要浪费时间。也允许我更多控制)

谢谢

3 个答案:

答案 0 :(得分:2)

我可能会偏离这里,但我认为解决您遇到的问题的一个简单方法是创建多个转发器控件,其中包含不同的项目模板并将它们包装在面板中。这样,根据用户参数,您可以简单地将结果数据绑定到正确的转发器,并将其他面板设置为不可见。

答案 1 :(得分:2)

我正在回顾一些旧代码,看看我是如何处理类似情况的。然后我在写回信之前就看到了杰西的回答。基本上,我倾向于同意杰西那里 - 这似乎是你所概述的最直接的解决方案。

答案 2 :(得分:1)

所以我不知道这有多大帮助,但有一种可能性就是使用MVC模板。 MVC非常方便,它实际上可以在非常有限的意义上使用(您的整个应用程序不需要实现它,只需要适用的页面),而且它也非常简单。

介绍如何在MVC中执行不同的模板:http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-1-introduction.html

可能可以修改模板,使其根据绑定的对象进行更改 - 就像WPF DataTemplateSelector的工作方式一样。

我以为我记得在MVC3或MVC4中看到的东西,你可以根据数据类型创建一个模板(就像你在Silverlight中一样),它会自动选择那个模板,但我现在很难找到它。

相关问题