代码之家  ›  专栏  ›  技术社区  ›  Curtis stepd

ItemDataBound'e.item.dataitem(“key”)'与ListView控件[重复]

  •  3
  • Curtis stepd  · 技术社区  · 14 年前

    我想从这个事件中访问绑定到特定ItemTemplate的数据,这可能吗?

    1 回复  |  直到 15 年前
        1
  •  21
  •   George Stocker NotMe    15 年前

    C#解决方案

    protected void listView_ItemDataBound(object sender, ListViewItemEventArgs e)
    {        
        if (e.Item.ItemType == ListViewItemType.DataItem)
        {
            ListViewDataItem dataItem = (ListViewDataItem)e.Item;
            // you would use your actual data item type here, not "object"
            object o = (object)dataItem.DataItem; 
        }
    }
    

    为什么他们让ListView变得如此不同,我还是有点困惑。但一定有原因。

        2
  •  4
  •   KOTJMF    15 年前

    有点晚了,但我会尽量回答你的问题,因为我有同样的问题,并找到了解决办法。必须将ListViewItemEventArgs的Item属性强制转换为ListViewDataItem,然后才能访问该对象的DataItem属性,如下所示:

    Private Sub listView_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ListViewItemEventArgs) Handles productsList.ItemDataBound
        If e.Item.ItemType = ListViewItemType.DataItem Then
            Dim dataItem As Object = DirectCast(e.Item, ListViewDataItem).DataItem
        ...
    End Sub
    

    然后可以将dataItem对象强制转换为绑定对象的任何类型。这与其他数据绑定控件(如中继器)的工作方式不同,其中DataItem是databound方法的事件参数上的属性。

        3
  •  1
  •   Fermin    15 年前

    找到了一个解决方法,我创建了一个方法来格式化我需要的数据,并使用以下方法从标记中调用它:

    <%# doFormatting(Convert.ToInt32(Eval("Points")))%>
    
        4
  •  1
  •   benscabbia    8 年前

    用于当前项的数据可以从 EventArgs

    所以从 RepeaterItemEventArgs e e.Item.DataItem .

    protected void listView_ItemDataBound(object sender, ListViewItemEventArgs e)
    {        
        if (e.Item.ItemType == ListViewItemType.DataItem)
        {
            var currentItem = e.Item.DataItem;
        }
    }