2009-04-10 5 views
0

J'utilise asp.net et un lien pour afficher un ensemble de livres de la base de données. n il me donne une erreurAsp.net, Linq Erreur: 'int' est un 'type' mais est utilisé comme une 'variable'

Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. 

Compiler Error Message: CS0118: 'int' is a 'type' but is used like a 'variable' 

Source Error: 

Line 48:   using(MobileBooksDataContext categoryList = new MobileBooksDataContext()) 
Line 49:   { 
Line 50:    int catID = Int32(CategoryName.SelectedItem); 
Line 51:    var newBookList = from b in categoryList.team5_bookmobiles 
Line 52:        where(b.ca_id == catID) 


protected void getBookList() 
    { 

     using(MobileBooksDataContext categoryList = new MobileBooksDataContext()) 
     { 
      int catID = Int32(CategoryName.SelectedItem); 
      var newBookList = from b in categoryList.team5_bookmobiles 
           where(b.ca_id == catID) 
          select new 
          { 
           lblBook_name = b.book_name, 
           lblBook_author = b.book_author, 
           lblBook_shortdesc = b.book_short_desc 
          }; 

      lv_Books.DataSource = newBookList; 
      lv_Books.DataBind(); 
     } 
    } 

    protected void btn_Select_Click(object sender, EventArgs e) 
    { 
     getBookList(); 
    } 

je prends l'identifiant de catégorie dans une liste déroulante et correspondent contre l'ID de catégorie de livres qui est dans une autre table.

Répondre

2

Je pense qu'il devrait être:

int catID = Int32.Parse(CategoryName.SelectedValue.ToString()); 
+0

ToString() n'est pas obligatoire, SelectedValue est déjà une chaîne. –

+0

Oh, merci! Ne savais pas ça. Je suppose que l'ajout de ToString() ne nuit en rien. – Dmitris

1

si vous avez changé

int catID = Int32(CategoryName.SelectedItem); 

à

int catID = Int32.Parse(CategoryName.SelectedItem); 
+0

i essayé le travail it.unfortunately ne marche pas. –

+0

La meilleure correspondance de méthode surchargée pour 'int.Parse (string)' a des arguments invalides C'est l'erreur que cela donne. –

1

Ligne 50 utilise le constructeur Int32 comme une fonction. Remplacez Int32(CategoryName.SelectedItem) par new Int32(CategoryName.SelectedItem), ou transtypez simplement en int en utilisant (Int32)(CategoryName.SelectedItem).

0

Juste essayer d'être du bon côté:

int catID = Int32.Parse(CategoryName.SelectedItem.ToString()); 
0

Si vous utilisez DataBinding, SelectedItem est très probablement l'objet étant lié aux données. Vous pouvez l'utiliser, mais vous devrez le lancer en premier. Cela peut être une meilleure performance, puisque vous n'aurez pas à effectuer une analyse de chaîne pour obtenir votre identifiant de catégorie. Ou, vous pouvez utiliser la propriété DropDownList.SelectedValue, que vous avez peut-être configurée à l'aide de l'assistant de liaison de données, ou la propriété DataValueField dans la déclaration du contrôle. Dans tous les cas, vous ne pouvez pas utiliser une syntaxe C++ ou VB pour effectuer un transtypage vers un Int32 à l'aide de C#.

Si vous utilisez la propriété SelectedValue, vous aurez une chaîne et pour le convertir en un Int32, vous devrez écrire quelque chose comme ceci:

var value = Int32.Parse(CategoryName.SelectedValue, CultureInfo.InvariantCulture); 
Questions connexes