Asp.net 从ListView ItemDataBound事件处理程序中的数据源访问完整数据行

Asp.net 从ListView ItemDataBound事件处理程序中的数据源访问完整数据行,asp.net,listview,datasource,Asp.net,Listview,Datasource,在ListView ItemDataBound事件处理程序中,是否有可能访问该事件的完整数据行?绑定时,我需要对整行进行大量处理,但在数据行中使用的数据项值并不是我在显示本身中实际使用的数据项值。也许可以尝试使用ListViewDataItem属性访问对象绑定到的基础数据对象的属性。ListViewDataItem属性仅在控件的ItemDataBound事件期间和之后可用,通常与数据源对象中的记录相对应 下面是一个例子 protected void listProducts_ItemDataB

在ListView ItemDataBound事件处理程序中,是否有可能访问该事件的完整数据行?绑定时,我需要对整行进行大量处理,但在数据行中使用的数据项值并不是我在显示本身中实际使用的数据项值。

也许可以尝试使用
ListViewDataItem
属性访问对象绑定到的基础数据对象的属性。ListViewDataItem属性仅在控件的ItemDataBound事件期间和之后可用,通常与数据源对象中的记录相对应

下面是一个例子

protected void listProducts_ItemDataBound(object sender, ListViewItemEventArgs e)
{
  if (e.Item.ItemType == ListViewItemType.DataItem)
  {
    ListViewDataItem dataItem = (ListViewDataItem)e.Item;
    string prodtype = (string)DataBinder.Eval(dataItem, "ProductType");
    // ...
  }
}
试试这个

DataRowView dr=(DataRowView)datainder.GetDataItem(e.Item)

使用
dr.Item.ItemArray您可以访问整行

关闭,但据我所知,仅允许我访问一个数据项—在特定时刻绑定的项,而不是ListView ItemTemplate迭代中绑定的整个数据行。抱歉,您是指给定行只有一个字段,还是需要引用另一行的数据?我想您指的是Eval(dataItem.dataItem,“ProductType”);那么这就行了。他们肯定已经改变了这一点,因为你使用的是.NET的任何版本。似乎不再存在.Item.ItemArray。不过,您可以通过dr.Row[“ColumnName”]获取列。