Использование ControlParameter в FilterParameters, когда свойство имеет значение null - PullRequest
0 голосов
/ 21 апреля 2010

У меня есть DataList и FormView;у них есть отдельные источники данных, хотя они получают ту же информацию.Источник данных FormView имеет выражение FilterExpression для извлечения того, что было выбрано в DataList.При первой загрузке SelectedValue объекта DataList является нулевым (естественно).Я ожидаю, что FilterExpression приведет к нулю строк, но это не так.Если я устанавливаю DefaultValue на 0, это происходит, но тогда параметр никогда не обновляется, когда я выбираю что-то из DataList.Я делаю это неправильно?

1 Ответ

0 голосов
/ 21 апреля 2010

Оказывается, (согласно этому посту ) есть ошибка с этим. Решение состоит в том, чтобы прикрепить обработчик 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;
            }
        }
    }
}
...