<asp:ObjectDataSource 
ID="objDsList" 
runat="server"  
TypeName="TYWEB.BLL.T_GOOD"
SelectMethod="GetPaged"
SortParameterName="OrderBy" 
EnablePaging="True"  
StartRowIndexParameterName="PageIndex"
MaximumRowsParameterName="PageSize"
SelectCountMethod="GetCountNum"
DeleteMethod="Delete" FilterExpression="sppp=@s"  >
<DeleteParameters>
        <asp:Parameter Name="GoodID" Type="Int32" />
    </DeleteParameters>
    <SelectParameters>
        <asp:Parameter Name="WhereClause" Type="String"  />              
</SelectParameters>
    <FilterParameters>
        <asp:QueryStringParameter  Name="s" QueryStringField="s" />
    </FilterParameters>    
</asp:ObjectDataSource>
不使用筛选一切正常
加上
FilterExpression="sppp=@s"
 <FilterParameters>
        <asp:QueryStringParameter  Name="s" QueryStringField="s" />
    </FilterParameters> 
后出错
错误如下:
未找到列 [@s]。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.EvaluateException: 未找到列 [@s]。

解决方案 »

  1.   

    <%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.CS" Assembly="Samples.AspNet.CS" %>
    <%@ Page language="c#" %>
    <script runat="server">    protected void ObjectDataSource1_Filtering(object sender, ObjectDataSourceFilteringEventArgs e)
        {
            if (Textbox1.Text == "")
            {
                e.ParameterValues.Clear();
                e.ParameterValues.Add("FullName", "Nancy Davolio");
            }
        }
    </script><html>
      <head>
        <title>ObjectDataSource - C# Example</title>
      </head>
      <body>
        <form id="Form1" method="post" runat="server">        <p>Show all users with the following name.</p>        <asp:textbox id="Textbox1" runat="server" text="Nancy Davolio" />        <asp:gridview
              id="GridView1"
              runat="server"
              datasourceid="ObjectDataSource1"
              autogeneratecolumns="False">
              <columns>
                <asp:boundfield headertext="ID" datafield="EmpID" />
                <asp:boundfield headertext="Name" datafield="FullName" />
                <asp:boundfield headertext="Street Address" datafield="Address" />
              </columns>
            </asp:gridview>        <!-- Security Note: The ObjectDataSource uses a FormParameter,
                 Security Note: which does not perform validation of input from the client. -->        <asp:objectdatasource
              id="ObjectDataSource1"
              runat="server"
              selectmethod="GetAllEmployeesAsDataSet"
              typename="Samples.AspNet.CS.EmployeeLogic"
              filterexpression="FullName='{0}'" OnFiltering="ObjectDataSource1_Filtering">
                <filterparameters>
                  <asp:formparameter name="FullName" formfield="Textbox1" defaultvalue="Nancy Davolio" />
                </filterparameters>
            </asp:objectdatasource>        <p><asp:button id="Button1" runat="server" text="Search" /></p>    </form>
      </body>
    </html>看看msdn的例子吧。
      

  2.   

    很好 谢谢
    不过怎么把这个和分页结合起来呢
    SelectCountMethod得到得记录条数永远是没有变的?
    怎么把这个传给SelectCountMethod呢