如何在ItemDataBound中访问数据绑定项?

时间:2008-12-05 14:54:38

标签: asp.net repeater

我希望在asp:repeater的ItemDataBound事件期间获取数据绑定的项目。

我尝试了以下内容(这是stackoverflow question中未经接受的答案):

protected void myRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    Object dataItem = e.Item.DataItem;
    ...
}

e.Item.DataItem为空。

如何在名为ItemDataBound的事件期间访问被绑定数据的项目。我假设事件ItemDataBound发生在一个项目是数据绑定时。

我想了解对象,以便我可以采取措施来控制它的显示方式,此外该对象可能还有其他有用的属性,让我可以丰富它的显示方式。

答案

Tool有正确的答案。答案是e.Item.Data仅在e.Item.ItemType为(Item,AlternatingItem)时有效。其他时候它无效。在我的情况下,我在标题(或页脚)行期间收到ItemDataBound事件,其中没有DataItem:

protected void myRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
   // if the data bound item is an item or alternating item (not the header etc)
   if (e.Item.ItemType != ListItemType.Item && 
         e.Item.ItemType != ListItemType.AlternatingItem)
   {
      return;
   }

   Object dataItem = e.Item.DataItem;
   ...
}

5 个答案:

答案 0 :(得分:17)

我不得不猜测你需要这个:

if (e.Item.ItemType == ListItemType.Item ||
    e.Item.ItemType == ListItemType.AlternatingItem)
{
    //Put stuff here
}

毕竟,项目本身可能代表页眉或页脚行。

答案 1 :(得分:11)

我只想补充一点,我通过以下方式完成了这项工作:

protected void rpt_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
      //determine if the row type is an Item
      if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem))
      {
        DataRowView row = (DataRowView)e.Item.DataItem;
        if (row["RowName"].ToString() == "value")
        {
          //INSERT CODE HERE
        }
      }
    }

答案 2 :(得分:3)

对于转发器

if (e.Item.ItemType != ListItemType.Item && e.Item.ItemType...

可以修改为:

if (e.Item.DataItem != null) ...

答案 3 :(得分:1)

使用 动态

 dynamic item = e.Item.DataItem;
 string style = item.Style;

答案 4 :(得分:0)

如果您正在处理asp:ListView,您可以执行以下操作:

    protected void myLV_ItemDataBound(object sender, ListViewItemEventArgs e)
{
    if (e.Item.ItemType != ListViewItemType.DataItem)
        return;

    object dataItem = ((ListViewDataItem)e.Item).DataItem;

}

(问题的标题没有提到asp:repeater ..所以我认为发布asp:listview的代码可能会有所帮助)