【发布时间】:2011-06-29 09:51:27
【问题描述】:
我想在我的 .net 页面上扩展列表框并添加一个 onrowdatabound 事件,我想知道我是否可以这样做?谢谢。
【问题讨论】:
标签: c# visual-studio-2008 .net-3.5
我想在我的 .net 页面上扩展列表框并添加一个 onrowdatabound 事件,我想知道我是否可以这样做?谢谢。
【问题讨论】:
标签: c# visual-studio-2008 .net-3.5
我不确定为什么在每行基础上执行此操作会很有价值,而不仅仅是捕获 DataBinding 并在那里做任何你想做的事情。但如果你真的想这样做,那么只需遍历数据源并引发一个事件:
public class ItemDataBoundArgs: EventArgs
{
public object Item;
}
public class MyListBox: ListBox
{
public event EventHandler ItemDataBound;
protected override void OnDataBinding(EventArgs e)
{
base.OnDataBinding(e);
if (ItemDataBound != null)
{
foreach (var item in (IEnumerable)DataSource)
{
var e= new ItemDataBoundArgs();
e.Item=item;
ItemDataBound(this,e);
}
}
}
}
当然,这要求 DataSource 是 IEnumerable 的,但它不是必须的,所以你也可以检查一下。
这听起来像是一个面试问题...
【讨论】: