Использование ControlParameter в FilterParameters, когда свойство имеет значение null
У меня есть DataList и FormView; у них есть отдельные источники данных, хотя они получают ту же информацию. Источник данных FormView имеет выражение FilterExpression для извлечения того, что было выбрано в DataList. При первой загрузке SelectedValue объекта DataList является нулевым (естественно). Я ожидаю, что FilterExpression приведет к нулю строк, но это не так. Если я устанавливаю DefaultValue в 0, это происходит, но тогда параметр никогда не обновляется, когда я выбираю что-то из DataList. Я делаю это неправильно?
1 ответ
Оказывается, (согласно этому посту) есть ошибка с этим. Решение состоит в том, чтобы прикрепить обработчик 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;
}
}
}
}