2008-11-13 5 views
9

J'utilise un contrôle de répétition et je suis en train de passer un paramètre en tant que tel:Comment passez-vous un Container.DataItem en tant que paramètre?

<%# SomeFunction(DataBinder.Eval(Container.DataItem, "Id")) %> 

Il est essentiellement appeler:

public string SomeFunction(long id) { 

    return "Hello";   

} 

Je ne suis pas en mesure de réaliser ce que je reçois une erreur:

erreur CS1502: La meilleure méthode surchargée ... SomeFunction (long id) ... a des arguments non valides.

Des idées?

Répondre

10

Vous devez jeter le résultat d'une longue, donc:

<%# SomeFunction((long)DataBinder.Eval(Container.DataItem, "Id")) %> 

L'alternative est de faire quelque chose comme ceci:

<%# SomeFunction(Container.DataItem) %> 

et ...

public string SomeFunction(object dataItem) { 
    var typedDataItem = (TYPED_DATA_ITEM_TYPE)dataItem; 

    // DO STUFF HERE WITH THE TYPED DATA ITEM 

    return "Hello";   

} 

Cela vous permet au moins de travailler avec plusieurs valeurs de l'élément de données (DataRows, etc.).

2

Je pense que vous devriez lancer le DataBinder.Eval (Container.DataItem, "Id") aussi longtemps.

0

Je l'ai utilisé avec succès. La source de données est une collection de listes.

OnClientClick='<%# "return myFunction(\""+ Container.DataItem + "\");" %>' 

et la fonction javascript ...

function myFunction(imgPath) 
{ 
    alert(imgPath); 
} 
Questions connexes