【发布时间】:2010-04-22 20:06:36
【问题描述】:
我有一个 ASPX 页面(带有 VB Codebehind)。我想扩展 GridView 类以在没有返回行时显示页眉/页脚。
我在网上找到了一个 C# 示例 (link) (source)。但是,我无法将其转换为 VB,因为它使用类型化事件(这在 VB 中是不合法的)。
我在线尝试了几个免费的 C# 到 VB.NET 转换器,但都没有成功。
请将示例转换为 VB.NET 或提供扩展 GridView 类的替代方法。
注意事项/困难:
如果
DataView对象出现错误,请将类型指定为System.Data.DataView,类型比较可能如下:If data.[GetType]() Is GetType(System.Data.DataView) Then-
由于事件 MustAddARow 在 VB 中不能有类型(并且
RaiseEvent event没有返回值),我如何将它与函数OnMustAddARow()中的Nothing进行比较?
编辑:
以下是一个示例,其中包含(希望)相关代码来帮助回答问题。
namespace AlwaysShowHeaderFooter {
public delegate IEnumerable MustAddARowHandler(IEnumerable data);
public class GridViewAlwaysShow : GridView {
// Various member functions omitted //
protected IEnumerable OnMustAddARow(IEnumerable data) {
if (MustAddARow == null) {
throw new NullReferenceException("The datasource has no rows. You must handle the \"MustAddARow\" Event.");
}
return MustAddARow(data);
}
public event MustAddARowHandler MustAddARow;
}
}
【问题讨论】:
-
如果您在问题本身中包含“类型化事件”的示例,我会提供帮助。
-
如果您编译代码并在 Reflector 中查看,您可以切换到 VB.Net 视图。无需在线转换器。
-
@Mikael:我无法让 Reflector 转换代码。提交等效的工作 VB 代码作为答案,我会接受。
-
@Steven,我试过试一试,但是我今天的VB技术和耐心都达不到它:)但我确定它可以转换,但你必须更改代码有点让它运行。反射器出口不会削减它。也许在 C# 中创建这部分并链接它更容易。
-
@Mikael:我如何链接它?不妨提交作为答案。
标签: c# vb.net visual-studio-2008