在下在ObjectDataSource使用多参数滤镜,在为已经为滤镜参数定下DefaultValue,但如果多次使用滤镜功能后,DefaultValue变得无效。<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" ....... 
      onfiltering="ObjectDataSource1_Filtering" FilterExpression="Name LIKE '%{0}%' or Author LIKE '%{1}%' or Publishing LIKE '%{2}%'">
          <FilterParameters>
              <asp:ControlParameter ControlID="tbBookName" Name="Name" PropertyName="Text" DefaultValue="nothing" />
              <asp:ControlParameter ControlID="tbAuthor" Name="Author" PropertyName="Text" DefaultValue="nothing" />
              <asp:ControlParameter ControlID="tbPublishing" Name="Publishing" 
                  PropertyName="Text" DefaultValue="nothing" />
          </FilterParameters>
 </asp:ObjectDataSource>测试程序
 protected void ObjectDataSource1_Filtering(object sender, ObjectDataSourceFilteringEventArgs e)
    {   string data = "name:" + e.ParameterValues[0].ToString()+"author:" + e.ParameterValues[1].ToString() + "publishing:" + e.ParameterValues[2].ToString();
        Response.Write(data);
    }  在大约前5次测试时,运行正确,数据都可以找到
  例如:只填tbAuthor,而tbBookName  tbPublishing都为空白时,测试结果为
     name:nothing author:Stephen Walther publishing:nothing  但在多次使用后,问题出现
   例如:只填tbBookName,tbAuthor tbPublishing都为空白,测试结果为
    name:ASP.NET Unleashed author: publishing:
  这时候,author和publishing默认值无效,ObjectDataSource无法重新绑定。在下也尝试在objectDataSource_Filthering重新设置Filter的DefualtValue,
   protected void ObjectDataSource1_Filtering(object sender, ObjectDataSourceFilteringEventArgs e)
    {
        if (e.ParameterValues[0]==null)
            e.ParameterValues[0] = "Nothing";        if (e.ParameterValues[1] == null)
            e.ParameterValues[1] = "Nothing";        if (e.ParameterValues[2]==null)
            e.ParameterValues[2] = "Nothing";
    }
但还是出现相同问题。