2017-07-27 6 views
0

QueryStringParametersをASP.Net WebフォームのObjectDataSourceと連携させることができないようです。私はこれを何百回もやったようですが、PageLoadイベントでテストすると、クエリーストリングが読み込まれていますが、以下のことが全く機能しない理由はわかりません(パラメータは完全に無視されます)。QueryStringParametersが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> 

startRowIndexの値は、メソッドに渡さ常に0であり、maximumRowsは常に-1(デフォルトは10でなければならないにも関わらず)。

クエリ文字列が正しく読み取られていることを確認するため、次のように実行して値が実際に存在することを確認しました。

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 

そして彼らは正しいです - そのように見えるURL:

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

方法ヘッダー:私はしたので、私はMVCに移動した

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

は(しばらくして古いWebフォームを編集しなければならなかったので)、SelectParametersを動作させるために何か他のものを忘れてしまったと思います。 アイデア

答えて

0

私はそれを理解しました。ページングが有効になりました。 ODS QueryString Selectパラメータは、ページングがオンの場合は無視されます。 明らかに、コントロールには内部的にクエリーストリングのパラメータがあります(グリッドビュー& ListViewはSEOのために恐ろしいのですが、コードビハインドからこれを行う必要があります)。

関連する問題