2008-11-13 20 views
9

estoy usando un control del repetidor y yo estoy tratando de pasar un parámetro como tal:¿Cómo se pasa un Container.DataItem como parámetro?

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

Se trata básicamente de llamar:

public string SomeFunction(long id) { 

    return "Hello";   

} 

No soy capaz de lograr esto como consigo un error:

error CS1502: La mejor coincidencia de método sobrecargado ... SomeFunction (ID largo) ... tiene algunos argumentos no válidos.

¿Alguna idea?

Respuesta

10

, es necesario especificar el resultado de un largo, así que:

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

La alternativa es hacer algo como esto:

<%# SomeFunction(Container.DataItem) %> 

y ...

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

    // DO STUFF HERE WITH THE TYPED DATA ITEM 

    return "Hello";   

} 

Esto al menos le permite trabajar con múltiples valores del elemento de datos (DataRows, etc.).

2

Creo que deberías lanzar el DataBinder.Eval (Container.DataItem, "Id") siempre.

0

Lo usé con éxito. La fuente de datos es una colección de listas.

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

y la función de JavaScript ...

function myFunction(imgPath) 
{ 
    alert(imgPath); 
} 
Cuestiones relacionadas