我想在asp:repeater的ItemDataBound事件期间获取数据绑定的项目.
我尝试了以下(在stackoverflow问题中这是一个不可接受的答案):
protected void myRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e) { Object dataItem = e.Item.DataItem; ... }
但是e.Item.DataItem
没有.
如何在名为ItemDataBound的事件期间访问被绑定数据的项目.我假设事件ItemDataBound发生在一个项目是数据绑定时.
我想得到这个对象,所以我可以采取措施控制它的显示方式,此外该对象可能还有其他有用的属性,让我可以丰富它的显示方式.
工具有正确的答案.答案是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; ... }
Programmin T.. 17
马上我不得不猜你需要这个:
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { //Put stuff here }
毕竟,项目本身可能代表页眉或页脚行.
马上我不得不猜你需要这个:
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { //Put stuff here }
毕竟,项目本身可能代表页眉或页脚行.
我只是想补充一点,我通过执行以下操作完成了此操作:
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 } } }