5

次のようなグリッドビューがあります。

<asp:GridView ID="gv" runat="server" SelectMethod="gv_GetData" AllowPaging="true" AllowSorting="true" AutoGenerateColumns="true">
</asp:GridView>

私は動作するC#で次のコードを持っています:

public IList<string> gv_GetData(int maximumRows, int startRowIndex, out int totalRowCount, string sortByExpression)
{
    List<string> l = GetTestData();
    totalRowCount = l.Count;
    return l;
}

private List<string> GetTestData()
{
    List<string> l = new List<string>();
    l.Add("a");
    l.Add("b");
    l.Add("c");
    return l;
}

今、VBで私は持っています:

Public Function gv_GetData(maximumRows As Integer, startRowIndex As Integer, ByRef totalRowCount As Integer, sortByExpression As String) As IList(Of String)
    Dim l As List(Of String) = GetTestData()
    totalRowCount = l.Count
    Return l
End Function

Private Function GetTestData() As List(Of String)
    Dim l As New List(Of String)()
    l.Add("a")
    l.Add("b")
    l.Add("c")
    Return l
End Function

VB バージョンでは、常に次のエラーが生成されます。

DataBoundControl でページングが有効になっている場合、SelectMethod は IQueryable を返すか、次の必須パラメーターをすべて持つ必要があります: int startRowIndex、int maximumRows、out int totalRowCount

これはフレームワークのバグでしょうか? それとも、あまりにも明白な何かが欠けていますか?


以下のnemesvによる回答。新しい方法は次のとおりです。

Public Function gv_GetData(maximumRows As Integer, startRowIndex As Integer, <System.Runtime.InteropServices.Out()> ByRef totalRowCount As Integer, sortByExpression As String) As IList(Of String)
    Dim l As List(Of String) = GetTestData()
    totalRowCount = l.Count
    Return l
End Function
4

1 に答える 1

8

OutAttributeでマークする必要がありtotalRowCountます

<Out()> ByRef totalRowCount As Integer

これは意味的には c#outキーワードと同等です。

于 2012-08-21T17:08:40.440 に答える