2011-07-21 109 views
3

显示我有一个ObjectDataSource和构成如下一个gridview数据(使用VS2008瓦特/ .NET3.5):的ObjectDataSource寻呼 - >没有在GridView中

<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> 

中有没有事件处理器或其它代码后面为GridView或数据源

所以有在底层类 “ErrorViewModel” 方法的代码: 公共数据表GetMainData() { 变种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 =真正的数据源,就没有在GridView显示的数据。如果EnablePaging设置为false,则显示数据。如您所见,检索数据的两种方法将完全相同。 调试显示,有行使用EnablePaging = TRUE时返回。 另一个奇怪的事情(使用EnablePaging = TRUE): 在GetMainData maximumRows设置为15和startRowIndex 0 在CountMainData maximumRows设置为0,startRowIndex 0

我实现了这种类型的自定义分页的另一项目,并做了相同的配置 - 但这次它驻留在这种奇怪的行为。我的实施出了什么问题?我只是忘了一个小设置?有什么建议么?

回答

5

的错误是,认为CountMainData没有返回一个整数。 我改变CountMainData后返回一个整数,一切运行良好。

+0

纪念这个答案的解决方案(点击复选标记)来标记你的问题作为解决 – eckes

+0

这是令人难以置信的是'Long'不是记录计数的有效的返回类型。感谢您指出这一点......并请将其标记为答案。 – cjbarth

+0

@ user855601只需花8小时撕裂我的网格和ObjectDataSource拆开来找到解决这个问题。感谢你的回答! –