【问题标题】:.net listbox add onrowdatabound event - how?.net 列表框添加 onrowdatabound 事件 - 如何?
【发布时间】:2011-06-29 09:51:27
【问题描述】:

我想在我的 .net 页面上扩展列表框并添加一个 onrowdatabound 事件,我想知道我是否可以这样做?谢谢。

【问题讨论】:

    标签: c# visual-studio-2008 .net-3.5


    【解决方案1】:

    我不确定为什么在每行基础上执行此操作会很有价值,而不仅仅是捕获 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 的,但它不是必须的,所以你也可以检查一下。

    这听起来像是一个面试问题...

    【讨论】:

    • 不,这不是面试问题。我正在尝试为列表中的每一行添加一个“标题”,就像工具提示一样,我知道如何使用 rowbound 事件对 gridview 执行此操作,但不知道如何对列表框执行相同操作。
    • 难道不能在控件创建之后再做,然后遍历 Items 集合吗?
    • 你应该这么说很有趣,这正是我最终所做的。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-13
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 2011-05-07
    相关资源
    最近更新 更多