当我尝试将 ObjectDataSource、ListView 和 DataPager 连接在一起时,正确的值不会传递给 ObjectDataSource 的 select 方法。-1 总是传递给maximumRows
, 0 传递给startRowIndex
。
<asp:DataPager runat="server" ID="Address_DataPager" PageSize="50" PagedControlID="Address_ListView" >
<Fields>
<asp:NextPreviousPagerField ShowFirstPageButton="true" ShowLastPageButton="true"
FirstPageText="|<< " LastPageText=" >>|"
NextPageText=" > " PreviousPageText=" < " />
</Fields>
</asp:DataPager>
<asp:ListView ID="Address_ListView" runat="server"
DataSourceID="Address_DataSource" DataKeyNames="AddressId" >
<LayoutTemplate>
<table class="resultsGrid">
<tr class="gridRow">
<th scope="col">Address</th>
</tr>
<asp:PlaceHolder ID="itemPlaceholder" runat="server" />
</table>
</LayoutTemplate>
<ItemTemplate>
<tr class="gridRow">
<td>
<asp:Label ID="Address_Label" runat="server" Text='<%# Eval("Address") %>' />
</td>
</tr>
</ItemTemplate>
</asp:ListView>
<asp:ObjectDataSource ID="Address_DataSource" runat="server" TypeName="SuperApp.Business.Address"
SelectMethod="SelectAddress" EnablePaging="True"
MaximumRowsParameterName="maximumRows"
StartRowIndexParameterName="startRowIndex" >
<SelectParameters>
<asp:Parameter Name="maximumRows" DefaultValue="10" Type="Int32" />
<asp:Parameter Name="startRowIndex" DefaultValue="5" Type="Int32" />
</SelectParameters>
</asp:ObjectDataSource>
Address
这是命名空间中类中的 select 方法SuperApp.Business
:
System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Select, false)]
public DataTable SelectAddress(int maximumRows, int startRowIndex)
{
if (maximumRows < 1) throw new ArgumentOutOfRangeException("maximumRows", "Maximum rows should be greater than zero.");
if (startRowIndex < 0) throw new ArgumentOutOfRangeException("startRowIndex", "Start row index should be greater or equal to zero.");
if (startRowIndex >= maximumRows) throw new ArgumentOutOfRangeException("startRowIndex", "Start row index should be less than the maximum rows.");
// Would do something interesting here.
return null;
}
总是抛出第一个异常,总是抛出maximumRows
-1。我试过了:
- 将 DataPager 移入 LayoutTemplate。
- 将 DataPager 移入 LayoutTemplate 并删除 PagedControlID 值。
- 将 DefaultValue 值更改为各种各样的东西。
- 从参数中删除 DefaultValues。
- 从参数中删除类型。
- 完全删除 SelectParameters。
这可能是我看不到的显而易见的事情。有什么建议么?