2010-04-21 11 views
0

J'ai un DataList et un FormView; ils ont des sources de données séparées, bien qu'ils tirent la même information. La source de données de FormView a une FilterExpression pour tirer tout ce qui a été sélectionné sur la liste de données. Au premier chargement, la valeur SelectedValue de la DataList est nulle (naturellement). Je m'attends à ce que FilterExpression génère zéro ligne, mais ce n'est pas le cas. Si je mets le DefaultValue à 0, c'est le cas, mais le paramètre ne se met jamais à jour lorsque je sélectionne quelque chose dans la DataList. Est-ce que je le fais mal?Utilisation d'un paramètre ControlParameter dans FilterParameters lorsque la propriété est NULL

Répondre

0

Il s'avère, (selon this post) il y a un bug avec ceci. La solution consiste à attacher un gestionnaire OnFiltering comme celui-ci (j'ai apporté quelques améliorations):

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; 
      } 
     } 
    } 
}