如何将Container.DataItem作为参数传递?

时间:2008-11-13 16:11:15

标签: c# asp.net

我正在使用转发器控件,我正试图传递一个参数:

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

它基本上是在呼唤:

public string SomeFunction(long id) {

    return "Hello";        

}

我收到错误后无法实现此目的:

错误CS1502:最好的重载方法匹配... SomeFunction(long id)...有一些无效的参数。

有什么想法吗?

3 个答案:

答案 0 :(得分:10)

您需要将结果转换为long,所以:

<%# 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等)中的多个值。

答案 1 :(得分:2)

我认为你应该长时间地投射DataBinder.Eval(Container.DataItem,“Id”)。

答案 2 :(得分:0)

我成功地使用了它。数据源是List集合。

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

和javascript函数......

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