如何更新过滤表达式&的SQLDataSource的过滤器参数值? filter参数是否已在aspx中定义?我正在尝试添加alpha分页器。
背后的代码
protected void rptFilterUI_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "All")
{
ClearFilter();
}
else
{
userSource.FilterParameters.Clear();
userSource.FilterParameters[0].DefaultValue = "LOGINID";
userSource.FilterParameters[1].DefaultValue = e.CommandName;
userSource.DataBind();
}
}
ASPX
<asp:SqlDataSource ID="userSource" runat="server" ProviderName="System.Data.OleDb"
ConnectionString="<%$ connectionstrings:testApp%>" SelectCommand="select * from foo"
FilterExpression="CONVERT({0},'System.String') like '{1}%'" EnableCaching="false">
<FilterParameters>
<asp:ControlParameter Name="test2" ControlID="SearchByDropDownList" PropertyName="SelectedValue" />
<asp:ControlParameter Name="test" ControlID="SearchTextBox" PropertyName="text" />
</FilterParameters>
</asp:SqlDataSource>
它会使索引超出范围
指数超出范围。必须是非负数且小于集合的大小。 参数名称:index
答案 0 :(得分:0)
FilterParameters是一个集合。因此这句话......
userSource.FilterParameters.Clear()
...将截断过滤器参数列表。因此,如果您尝试引用空集合的成员,您将获得超出范围异常的索引。
在.Clear()之后立即尝试...,放置以下代码..
userSource.FilterParameters.Add(new ControlParameter("test2", "SearchByDropDownList", "SelectedValue"));
userSource.FilterParameters.Add(new ControlParameter("test", "SearchTextBox", "Value"));