我目前正在尝试为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;作为给定代码中的人。
感谢任何帮助。谢谢。
答案 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