如何将URL参数传递给ObjectDataSource SelectMethod?

时间:2013-06-21 11:16:34

标签: c# asp.net .net-4.0

我有一个带有文章和评论的小型示例应用程序。 用户可以通过在URL中传递文章ID值来查看特定文章:

http://localhost:56079/viewArticle.aspx?id=123456

我希望使用文章ID来查找相应的注释,并以相同的形式用它们填充gridview。

viewArticle.aspx:

<dx:ASPxGridView ID="ASPxGridView1" runat="server" AutoGenerateColumns="False" Width="100%" DataSourceID="ObjectDataSource1">
                <Columns>
                    <dx:GridViewDataTextColumn  FieldName="field1"   Caption="Field #1"      VisibleIndex="0" />
                    <dx:GridViewDataTextColumn  FieldName="field2"   Caption="Field #2" VisibleIndex="1" />
                </Columns>
            </dx:ASPxGridView>
            <asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
                SelectMethod="searchComments"
                TypeName="App.CommentManager">
                <SelectParameters>
                </SelectParameters>
            </asp:ObjectDataSource>

如果 id 在searchComments方法中为“硬编码”,则网格视图会填充正确的条目。

我唯一的问题是将文章 id 传递给searchComments方法。

  • 我在想一个&lt;%#%&gt;“样式数据绑定方法,但它会非常脏,但它仍然不起作用。

    SelectMethod="searchComments(<%# Request.QueryString["id"] %>)"
    
  • 我尝试的另一种方法是在代码隐藏中设置selectmethod,如下所示:

    ObjectDataSource1.SelectMethod = "searchComments('123456')";
    

    导致错误:ObjectDataSource'ObjectDataSource1'找不到没有参数的非泛型方法'searchComments('123456')'。

2 个答案:

答案 0 :(得分:1)

将QueryStringParameter直接传递给SelectParameters - 即:

            <SelectParameters>
                <asp:QueryStringParameter  QueryStringField="id" />
            </SelectParameters>

答案 1 :(得分:1)

您可以在QueryStringParameter部分

中使用SelectParameters
    <SelectParameters>
            <asp:QueryStringParameter QueryStringField="id" Name="id"/>
    </SelectParameters>