我想在asp:repeater的ItemDataBound事件期间获取数据绑定的项目.
我尝试了以下(在stackoverflow问题中这是一个不可接受的答案):
protected void myRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
Object dataItem = e.Item.DataItem;
...
}
Run Code Online (Sandbox Code Playgroud)
但是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;
...
}
Run Code Online (Sandbox Code Playgroud)
Pro*_*ool 17
马上我不得不猜你需要这个:
if (e.Item.ItemType == ListItemType.Item ||
e.Item.ItemType == ListItemType.AlternatingItem)
{
//Put stuff here
}
Run Code Online (Sandbox Code Playgroud)
毕竟,项目本身可能代表页眉或页脚行.
小智 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
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
33931 次 |
最近记录: |