2008-11-13 23 views
9

Ich bin mit einem Steuerverstärker und ich versuche, einen Parameter als solche weitergeben müssen:Wie übergeben Sie ein Container.DataItem als Parameter?

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

Es ist im Grunde ruft:

public string SomeFunction(long id) { 

    return "Hello";   

} 

Ich bin das nicht in der Lage zu erreichen, wie ich ein Fehler:

Fehler CS1502: Die am besten überladene Methodenübereinstimmung ... SomeFunction (lange ID) ... hat einige ungültige Argumente.

Irgendwelche Ideen?

Antwort

10

Sie müssen das Ergebnis einer langen werfen, so:

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

Die Alternative ist, so etwas zu tun:

<%# SomeFunction(Container.DataItem) %> 

und ...

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

    // DO STUFF HERE WITH THE TYPED DATA ITEM 

    return "Hello";   

} 

Damit können Sie zumindest mit mehreren Werten aus dem Datenelement (DataRows usw.) arbeiten.

2

Ich denke, Sie sollten die DataBinder.Eval (Container.DataItem, "Id") so lange zu werfen.

0

Ich benutzte das mit Erfolg. Die Datenquelle ist eine List-Auflistung.

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

und die Javascript-Funktion ...

function myFunction(imgPath) 
{ 
    alert(imgPath); 
} 
Verwandte Themen