0

私は DataList と FormView を持っています。同じ情報を引き出しますが、別々のデータソースを持っています。FormView のデータソースには、DataList で選択されたものを取得するための FilterExpression があります。最初のロードでは、DataList の SelectedValue は (当然のことながら) null です。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 に答える