0

我有一个 DataList 和 FormView;尽管它们提取相同的信息,但它们具有单独的数据源。FormView 的数据源有一个 FilterExpression 来拉取在 DataList 上选择的任何内容。首次加载时,DataList 的 SelectedValue 为空(自然)。我希望 FilterExpression 产生零行,但事实并非如此。如果我将 DefaultValue 设置为 0,它确实如此,但是当我从 DataList 中选择某些内容时,该参数永远不会更新。我做错了吗?

4

1 回答 1

0

事实证明,(根据这篇文章)这有一个错误。解决方案是像这样附加一个 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;
            }
        }
    }
}
于 2010-04-21T19:22:36.443 回答