2010-12-03 6 views
0

Voici un extrait de mon code:aide l'insertion d'une nouvelle ligne dans une db LINQ

else 
    { 
     SubCategory subCat = new SubCategory 
     { 
      SubCategoryName = name, 
      Active = false, 
      CategoryID=Convert.ToInt32(ddlCategory.SelectedValue) 
     }; 
     db.SubCategories.InsertOnSubmit(subCat); 
    } 

    db.SubmitChanges(); 

La ligne suivante provoque une erreur:

CategoryID=Convert.ToInt32(ddlCategory.SelectedValue) 

Je confirme que le SelectedValue dans mon DDL est un int, et que la base de données attend un int, donc je ne comprends pas pourquoi asp.net me donne un YSOD disant "La chaîne d'entrée n'était pas dans un format correct."

Si j'attribue un numéro de catégorie manuellement, cela fonctionne.

EDIT: Le problème était parce que je remplissais la liste déroulante dans mon code et je ne l'ai pas enveloppé dans un (! IsPostBack). Donc, il détruisait la liste, la repeuplait et mettait l'index à 0 à chaque fois à posteriori.

+0

Est-ce EntityFramwork ou Linq2Sql ou Nhibernate? –

+0

@The_Smallest, Linq to Sql –

+0

Avez-vous essayé de mettre un point d'arrêt dessus et de voir si vous avez une valeur sélectionnée. – Phill

Répondre

0

alors essayez ceci alors

else 
    { 
     int cat = Convert.ToInt32(ddlCategory.SelectedValue); 
     SubCategory subCat = new SubCategory 
     { 
      SubCategoryName = name, 
      Active = false, 
      CategoryID = cat 
     }; 
     db.SubCategories.InsertOnSubmit(subCat); 
    } 
+0

qui ne fonctionne toujours pas, même erreur. –

0

D'où vient ddlCategory? Quelle est la valeur de ddlCategory.SelectedValue? Quand cela se passe-t-il? Il est clair que ce n'est pas une chaîne de nombres entiers valide à ce stade.

+0

ddlCategory est une liste déroulante asp.net. SelectedValue attend une valeur de type String, donc la conversion en int devrait fonctionner, tout comme lorsque vous utilisez .toString() pour convertir d'autres types en type string. –

0

Peut-être essayer

Int.Parse(ddlCategory.SelectedValue);

+0

qui ne fonctionne toujours pas, même si cela semble logique. –

0

est la clé étrangère categoryID pour une autre table? si oui alors essayez de tirer l'objet Category et ensuite l'assigner à la subCat.Category et voir si cela fonctionne (la relation doit être définie dans le concepteur DBML)

une dernière chose: quand exactement jette l'exception?

Questions connexes