ObjectDataSource分页 -> GridView中没有显示数据

3

我有一个ObjectDataSource和GridView,如下所示(使用带.NET3.5的VS2008):

    <asp:ObjectDataSource ID="odsMainData" runat="server" EnablePaging="True" OldValuesParameterFormatString="original_{0}"
        SelectMethod="GetMainData" TypeName="ErrorViewer.Model.ErrorViewModel" 
        SelectCountMethod="CountMainData">
        <SelectParameters>
            <asp:Parameter Name="maximumRows" Type="Int32" />
            <asp:Parameter Name="startRowIndex" Type="Int32" />
        </SelectParameters>
    </asp:ObjectDataSource>
    <asp:GridView ID="grdMainData" runat="server" AllowPaging="True"             DataSourceID="odsMainData" PageSize="15" AllowSorting="True">
    </asp:GridView>

网格视图或数据源的代码后台中没有事件处理程序或其他代码。

因此,在底层类“ErrorViewModel”中有方法: public DataTable GetMainData() { var dt = provider.MainData(); myMainData = dt; return dt; }

    public DataTable GetMainData(int maximumRows, int startRowIndex)
    {
        var dt = provider.MainData();
        myMainData = dt;
        return dt;
    }

    public long CountMainData()
    {
        var count = provider.GetMainDataCount();
        return count;
    }

    public long CountMainData(int maximumRows, int startRowIndex)
    {
        var count = CountMainData();
        return count;
    }

我需要的是自定义的服务器端分页。 问题所在: 当我在数据源中设置EnablePaging=true时,网格视图中将不显示任何数据。如果将EnablePaging设置为false,则会显示数据。你可以看到,检索数据的两种方法完全相同。 调试显示,在使用EnablePaging=true时返回了行。 另一个奇怪的事情(使用EnablePaging=true): 在GetMainData中,maximumRows设置为15,startRowIndex设置为0 在CountMainData中,maximumRows设置为0,startRowIndex设置为0
我在另一个项目中实现了这种类型的自定义分页,并进行了相同的配置 - 但这次出现了奇怪的行为。我的实现有什么问题?我是否忘记了一些小设置?有什么建议吗?
1个回答

6
错误在于CountMainData没有返回一个整数。 当我将CountMainData更改为返回整数后,一切都正常了。

请点击复选标记将此答案标记为解决方案,以标记您的问题已解决。 - eckes
令人难以置信的是,Long 不是记录计数的有效返回类型。感谢您指出这一点...请将其标记为答案。 - cjbarth
@user855601 刚刚花了8个小时来解决这个问题,不停地调试我的网格和对象数据源。感谢你的答案! - Bahri Gungor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接