【发布时间】:2011-10-08 16:55:25
【问题描述】:
我确定我在这里遗漏了一些明显的东西。
我有大约 20 个数据绑定的 GridView,每个都有一些共同的特性。假设它们都是人员列表,每个列表都以大约 10 列开始,这些列是带有悬停的复杂链接按钮等,它们都是一样的。这些网格的其余部分非常宽,由完全不同的列组成。只是前 10 个(大约 100 个)列是重复的。
因此,我有这段代码可以处理这 10 个数据库列并使用 10 个 Eval() 语句等呈现该 html。每个 GridView 中的代码都是相同的,它重复了 20 次,这显然不酷。
我不能只将它放入用户控件或自定义控件中,因为我需要 GridView 来处理列标题和所有这些内容。我当然可以为一列放置一个用户控件并以这种方式呈现我想要的所有内容(“eval”这样嵌套),但它没有给我列标题,这也是复杂。
这就是问题所在:有什么方法可以打破模板化的 GridView 控件来抽象这个重复的代码?我几乎想要一种服务器端包含或预处理的东西,因为我只需要真正重复文本,但我需要在 asp.net 尝试编译它之前完成它。我可以使用自定义控件来呈现我喜欢的任何 HTML,但这并不能解决问题,因为我需要生成的是 asp.net 代码,而不是 HTML。
【问题讨论】:
-
你不能从 Gridview 子类化并为那里的所有 10 个网格视图实现通用功能,然后再有更多的子类来实现特定网格视图的特定功能吗?我已经用 Pages 成功地做到了这一点(最基类具有所有子类都继承的身份验证逻辑)
-
听起来是个好主意 - 我会看看。它们都是真正的“事件列表”,但由于每个事件都有一个共同的复杂的前几列,听起来它可以工作。
-
其实我可能只需要标准 GridView 中的自定义字段:devlicio.us/blogs/christopher_bennage/archive/2006/09/20/…
-
你是对的 - 从 GridView 继承然后添加我的额外列并在那里绑定工作正常 - 谢谢。
标签: asp.net gridview c#-4.0 custom-controls databound-controls