我有一个DataList和FormView;他们有单独的数据源,但他们提取相同的信息。 FormView的数据源有一个FilterExpression来提取在DataList上选择的任何内容。在第一次加载时,DataList的SelectedValue为null(自然)。我希望FilterExpression导致零行,但事实并非如此。如果我将DefaultValue设置为0,它确实如此,但是当我从DataList中选择一些东西时,参数永远不会更新。我做错了吗?
答案 0 :(得分:0)
事实证明,(根据this post)这有一个错误。解决方案是附加一个像这样的OnFiltering处理程序(我做了一些改进):
protected void FilteringCheck(Object sender, SqlDataSourceFilteringEventArgs e)
{
// Make sure there are no null parameters.
for (int i = 0; i < e.ParameterValues.Count; i++)
{
if (e.ParameterValues[i] == null)
{
switch (((System.Web.UI.WebControls.SqlDataSourceView)sender).FilterParameters[i].Type)
{
case TypeCode.Int16:
case TypeCode.Int32:
case TypeCode.Int64:
e.ParameterValues[i] = -1;
break;
case TypeCode.Byte:
e.ParameterValues[i] = 0;
break;
case TypeCode.Char:
case TypeCode.String:
e.ParameterValues[i] = string.Empty;
break;
case TypeCode.DateTime:
e.ParameterValues[i] = new DateTime();
break;
}
}
}
}