我正在使用转发器控件,我正试图传递一个参数:
<%# SomeFunction( DataBinder.Eval(Container.DataItem, "Id") ) %>
它基本上是在呼唤:
public string SomeFunction(long id) {
return "Hello";
}
我收到错误后无法实现此目的:
错误CS1502:最好的重载方法匹配... SomeFunction(long id)...有一些无效的参数。
有什么想法吗?
答案 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);
}