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

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

 

它基本上是在呼唤:

 public string SomeFunction(long id) { return "Hello"; } 

因为我收到错误,我无法实现此目的:

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

有任何想法吗?

你需要将结果转换为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等)中的多个值。

我认为你应该抛出DataBinder.Eval(Container.DataItem,“Id”)。

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

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

和javascript函数……

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