2008-11-13 31 views
9

我使用一箇中繼器控制,我想傳遞一個參數爲這樣的:你如何傳遞一個Container.DataItem作爲參數?

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

它基本上呼籲:

public string SomeFunction(long id) { 

    return "Hello";   

} 

我不能做到這一點,因爲我得到一個錯誤:

錯誤CS1502:最好的重載方法匹配... SomeFunction(長ID)...有一些無效的參數。

任何想法?

回答

10

您需要將結果轉換爲長,所以:

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

另一種方法是做這樣的事情:

<%# SomeFunction(Container.DataItem) %> 

和...

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

    // DO STUFF HERE WITH THE TYPED DATA ITEM 

    return "Hello";   

} 

這至少允許您使用數據項中的多個值(DataRows等)。

2

我認爲你應該投射DataBinder.Eval(Container.DataItem,「Id」)。

0

我用這個成功了。數據源是一個List集合。

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

以及JavaScript函數...

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