2017-07-27 3 views
0

Je n'arrive pas à faire en sorte que QueryStringParameters fonctionne avec un objet ObjectDataSource dans les formulaires Web ASP.Net. On dirait que je l'ai fait un million de fois, mais je n'arrive pas à comprendre pourquoi ce qui suit ne fonctionnera pas du tout (les paramètres sont complètement ignorés, bien que la chaîne de queues soit lue si je teste dans l'événement PageLoad).QueryStringParameters ne fonctionne pas sur ASP.Net objectDataSource

<asp:ObjectDataSource ID="ods1" runat="server" EnablePaging="True" OldValuesParameterFormatString="original_{0}" SelectCountMethod="GetProductsCount" SelectMethod="GetProductsByPageSort" TypeName="ExpressSelect.ProductData" DataObjectTypeName="ExpressSelect.SearchProduct"> 
    <SelectParameters> 
     <asp:QueryStringParameter DefaultValue="0" Name="startRowIndex" QueryStringField="sri" Type="Int32" /> 
     <asp:QueryStringParameter DefaultValue="10" Name="maximumRows" QueryStringField="rows" Type="Int32" /> 
    </SelectParameters> 
</asp:ObjectDataSource> 

La valeur de startRowIndex transmis à la méthode est toujours 0 et les maximumRows est toujours -1 (même si la valeur par défaut devrait être 10). Pour m'assurer que la chaîne de requête était lue correctement, j'ai exécuté ce qui suit pour m'assurer que les valeurs sont bien là.

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load 
    Dim sri As String = Request.QueryString("sri") 
    Dim rows As String = Request.QueryString("rows") 
End Sub 

Et ils sont corrects - l'url à la recherche comme ceci:

http://localhost:49322/default?sri=5&rows=10 

L'en-tête de la méthode:

<DataObjectMethod(DataObjectMethodType.Select, True)> 
    Public Shared Function GetProductsByPageSort(ByVal startRowIndex As Integer, ByVal maximumRows As Integer) As DataTable 

J'ai déménagé à MVC (été un certain temps depuis que je suis J'ai dû éditer quelques vieilles webforms), donc je pense que j'ai juste oublié quelque chose d'autre pour faire fonctionner les SelectParameters. Des idées?

Répondre

0

Je l'ai compris. La pagination a été activée. Les paramètres ODS QueryString Select sont ignorés lorsque la pagination est activée. Apparemment, le contrôle a ses propres paramètres de chaîne de requête en interne (pourquoi le GridView & ListView est horrible pour le SEO hors de la boîte - vous devez le faire à partir de code-behind).