【问题标题】:Get data being bound to ListView on DataBound event在 DataBound 事件上获取绑定到 ListView 的数据
【发布时间】:2009-05-13 13:40:32
【问题描述】:

我有一个 ListView 控件,并在控件中添加了一个 DataBound 事件(不知道这是否正确)。

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

【问题讨论】:

    标签: asp.net listview


    【解决方案1】:

    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】:

      有点晚了,但我会尝试回答您的问题,因为我遇到了同样的问题并找到了解决方案。您必须将 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】:

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

        <%# doFormatting(Convert.ToInt32(Eval("Points")))%>
        

        【讨论】:

        • 我更喜欢这个解决方案,而不是在 ItemDataBound 事件中捕获它。唯一的建议是在您的方法doFormatting 中,您应该检查nullDBNull
        【解决方案4】:

        用于当前项目的数据可以从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;
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-05-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-12-15
          相关资源
          最近更新 更多