2013-04-02 2 views
0

J'ai un GridView et un ObjectDataSourceObjectDataSource définit MaximumRowsParameterName = -1

<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 semble fonctionner très bien. Mais quand je change de page sur GridView et que ObjectDataSource appelle la méthode, il envoie le paramètre NumRows = -1 (StartRowIndexParameterName = "NumRows"). Si j'appelle ObjectDataSource.Select() il envoie nbreLignes = 0

même si je définir une valeur au paramètre 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 envoie encore -1 ou 0. Pour paramètre il envoie la DEBUT RANGEE valeur correcte (cliquez sur la page 1 envoie 0, cliquez sur la page 2 envoie 15 ...)

+0

Vous devez définir le SelectCountMethod à votre ObjectDataSource. Est-ce que ma réponse a résolu le problème? –

+0

Eh bien, je ne travaille plus dessus (je n'ai pas le code source), mais je veux l'essayer, merci. – Logar314159

Répondre

0

La propriété SelectCountMethod de ObjectDataSource control est définie sur le nom d'une méthode qui renvoie le nombre total d'enregistrements dans la requête.

Vous devez implémenter votre source de données comme les suivantes:

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

    MaximumRowsParameterName="NumRows" 
    StartRowIndexParameterName="RowStart" 

    EnablePaging="true"> 

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

</asp:ObjectDataSource> 

ou vous pouvez suivre des exemples de this URL.