【问题标题】:Inheriting from asp:GridView继承自 asp:GridView
【发布时间】:2012-03-17 01:24:30
【问题描述】:

我有几个页面都有GridView 控件。在该控件中,有几个事件需要实现(OnRowDataBoundOnEditing 等...)

关于从一个页面继承会迫使我(虚拟功能)实现这些事件中的每一个的任何建议?由于GridView 是一个控件,我无法想象它的外观。如何从控件继承?

【问题讨论】:

    标签: asp.net gridview reusability


    【解决方案1】:

    这样做的一种常见方法是将您的 GridView 包含在 UserControl

    如果您将网格放在用户控件上,并订阅那里的所有事件,那么您可以在应用程序中的任何地方重用此实现 - 您实际上只是用您想要的功能包装用户控件,然后到处重复使用这个包装器。

    巧妙的是,您只需编写一次连线代码。

    这就是我认为你想要做的。

    但是,如果您想在用户控件之外扩展或处理这些事件,则需要重新实现它们(即添加您自己的事件处理程序并让它们冒泡)。

    不过,您不能强迫任何人订阅您的活动。

    如果您想强制实现事件,则可以将事件放在接口上,然后在您添加到的类或控件上实现该接口。由于事件在接口上,因此在实现接口之前,您将无法编译。

    如果您有特定的用例,我可以尝试添加一个示例。

    【讨论】:

    • 那我如何强制每个使用这个控件的页面实现所有的事件呢?我会在这个新的用户控件中加入类似的功能,而不是特定于这个控件吗?
    • 页面不需要实现这些事件;它只需要订阅它们。您不能强迫某人订阅事件。如果您想确保始终实现这些事件,那么您可以在用户控件中执行此操作,但这实际上取决于您想要做什么。
    • 你能提供一个在用户控件中实现了gridview包装的链接吗?谢谢
    • @PankajGarg 您并没有真正包装 GridView 本身 ​​- 您将 GridView 放在用户控件中,然后在那里进行所有接线、数据处理等。您已经有效地将您的“功能”包装在恰好使用 GridView 的用户控件中。如果您有想要查看/解决的特定功能/问题,我很乐意尝试并提供演示。
    • 我很想知道将gridview控件包装在usercontrol中的好处。我们通常编写 RowBoundData / RowCommand 事件并绑定数据,每个 GridView 都有一些我们希望在这些事件中找到的特定控件 ID,那么将这个控件限制在用户控件中的基本好处是什么?因为将它保存在一个地方并重复使用它似乎没有什么共同点。通常我们在数据库驱动的应用程序中使用它。
    猜你喜欢
    • 2023-03-27
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-12
    • 2022-01-13
    • 1970-01-01
    相关资源
    最近更新 更多