【问题标题】:How do you pass a Container.DataItem as a parameter?如何将 Container.DataItem 作为参数传递?
【发布时间】:2014-03-19 22:12:34
【问题描述】:

我正在使用中继器控件,并且正在尝试这样传递参数:

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

它基本上是在调用:

public string SomeFunction(long id) {

    return "Hello";        

}

由于出现错误,我无法做到这一点:

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

有什么想法吗?

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    您需要将结果转换为 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") 施放得越久。

      【讨论】:

        【解决方案3】:

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

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

        还有 javascript 函数...

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

        【讨论】:

          猜你喜欢
          • 2011-03-30
          • 2010-10-30
          • 2015-06-05
          • 2012-10-18
          • 2020-07-25
          • 1970-01-01
          • 2014-06-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多