Gridview的VB.NET扩展方法

时间:2016-07-08 13:45:16

标签: c# asp.net vb.net inheritance gridview

我目前正在尝试为gridview类设置扩展方法,以便我可以通过标题文本获取列的索引。我在C#中找到了以下代码:

 public static class ExtensionMethods
   {
    public static DataControlField GetColumnByHeader(this GridView grid, string name)
    {
        int index = -1;
        for (int i = 0; i < grid.Columns.Count; i++)
        {
            if (grid.Columns[i].HeaderText.ToLower().Trim() == name.ToLower().Trim())
            {
                index = i;
                break;
            }
        }
        return grid.Columns[index];
    }
}

来自http://www.softcodearticle.com/2013/06/asp-net-gridview-get-column-by-headertext/

我已经在MSDN上研究了扩展方法过程,但我能找到的只是字符串扩展器的信息。我非常熟悉继承和其他OOP原则,我只是不明白VB.NET的确切格式。有人可以向我解释为gridview类提供扩展方法的格式吗?方法中的代码是无关紧要的,虽然我确实需要能够引用gridview&#39;这个&#39;作为给定代码中的人。

感谢任何帮助。谢谢。

2 个答案:

答案 0 :(得分:2)

在VB.NET中,您必须手动使用该属性。

Imports System.Runtime.CompilerServices

Module MyExtensions

    <Extension> _
    Public Function MyExtensionMethod(ByVal grid As GridView, ByVal name As String) As DataControlField

        ' ... your code here!

    End Function

End Module

答案 1 :(得分:1)

为此,您需要使用<Extension()>

进行装饰
Imports System.Runtime.CompilerServices

Module ExtensionMethods

    <Extension()>
    Public Function GetColumnIndexByHeader(grid As GridView, name As String) As Integer
        For i As Integer = 0 To grid.Columns.Count - 1
            If grid.Columns(i).HeaderText.ToLower().Trim() = name.ToLower().Trim() Then
                Return i
            End If
        Next
        Return -1
    End Function

End Module

并称之为,

Dim indexOfYourHeader = GridView1.GetColumnIndexByHeader("your_header_name")

Doumentation:https://msdn.microsoft.com/en-us/library/bb384936.aspx