0

我有一个 GridView 和一个 ObjectDataSource

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" TypeName="myType" SelectMethod="FindByName"
    MaximumRowsParameterName="NumRows" StartRowIndexParameterName="RowStart" EnablePaging="true">
    <SelectParameters>
        <asp:Parameter Name="namex" Type="String" Direction="Input" DefaultValue="" />
        <asp:Parameter Name="RowStart" Type="Int32" Direction="Input" DefaultValue="0" />
        <asp:Parameter Name="NumRows" Type="Int32" Direction="Input" DefaultValue="15"/>
   </SelectParameters>

Everyting 似乎工作正常。但是当我在 GridView 上更改页面并且 ObjectDataSource 调用它发送参数 NumRows=-1(StartRowIndexParameterName="NumRows") 的方法时。如果我调用 ObjectDataSource.Select() 它发送 NumRows=0

即使我为参数 NumRows 设置了一个值

Protected Sub ObjectDataSource_Selecting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ObjectDataSourceSelectingEventArgs) Handles ObjectDataSource.Selecting
        e.InputParameters("NumRows") = 15
End Sub

ObjectDataSource 仍然发送 -1 或 0。对参数 RowStart 它发送正确的值(单击第 1 页发送 0,单击第 2 页发送 15...)

4

1 回答 1

0

control的SelectCountMethod属性ObjectDataSource设置为返回查询中记录总数的方法的名称。

您必须按以下方式实现数据源:

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
    TypeName="myType"
    SelectMethod="FindByName"
    SelectCountMethod="GetMyTypeCount"

    MaximumRowsParameterName="NumRows"
    StartRowIndexParameterName="RowStart"

    EnablePaging="true">

    <%--TODO : ...--%>

</asp:ObjectDataSource>

或者您可以按照此 URL的示例进行操作。

于 2013-09-18T08:12:24.167 回答