在下在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";
}
但还是出现相同问题。
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";
}
但还是出现相同问题。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货