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

9

我正在使用一个Repeater控件,想要传递参数如下:

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

基本上就是调用:

public string SomeFunction(long id) {

    return "Hello";        

}

我无法实现这个目标,因为我遇到了一个错误:
错误 CS1502:最佳重载方法匹配...SomeFunction(long id)...有一些无效的参数。
有任何想法吗?
3个回答

11

您需要将结果强制转换为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等)的多个值进行操作。


2

我认为你应该将DataBinder.Eval(Container.DataItem, "Id")转换为长整型。


1
我成功地使用了这个。数据源是一个列表集合。
OnClientClick='<%# "return myFunction(\""+ Container.DataItem + "\");" %>'

和javascript函数相关...

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接