2010-10-19 17 views
0

Sur ma page, chaque fois qu'une DetailsView est mise à jour, je dois auditer les modifications dans une base de données. Sur la plupart des pages, cela fonctionne parfaitement, car il n'y avait que des zones de texte - mais sur une page sur laquelle je travaille en ce moment, avec des listes déroulantes, mon code ne fonctionne pas. Fondamentalement, le code capture l'événement Updating de SqlDataSource, crée un lecteur de données pour examiner le contenu de la ligne avant sa mise à jour, compare le contenu aux paramètres de la requête de mise à jour de SqlDataSource, et si on a changé pour enregistrer cela dans un champ de la table d'audit. Un extrait de mon code est ci-dessous:Récupération de DropDownList 'value' (C#/ASP.NET)

while (reader.Read()) 
      { 
       for (int i = 0; i < reader.FieldCount; i++) 
       { 
      try { 
         if (reader[i].ToString() != e.Command.Parameters[i].Value.ToString()) 
         { 
          fields[i] = reader.GetName(i) + ": " + reader[i].ToString() + " => " + e.Command.Parameters[i].Value.ToString(); 
         } 
      } 
        catch { 
         if (reader[i].ToString() != "") 
         { 
          fields[i] = reader.GetName(i) + ": " + reader[i].ToString() + " => "; 
         } 
        } 


       } 
      } 

Lorsque la commande est sur une dropdownlist, il semble ne jamais aller "dans la SI, même si les champs sont différents. Dois-je faire quelque chose de spécial pour comparer les valeurs des listes déroulantes? Note Je crois que la valeur est stockée en tant qu'int dans ma table.

Merci

Répondre

0

Totalement ma faute. Il y avait un paramètre supplémentaire sur la commande que j'ai dû exclure d'une manière ou d'une autre.