2010-04-05 72 views
0

我想要子類DataList接受來自嵌入式LinkBut​​tons的新命令。這是我的抽象類:擴展DataList以接受來自LinkBut​​tons的新InsertCommand

public abstract class BaseFieldGroup : DataList 
{ 
    public const string InsertCommandName = "Insert"; 
    public event DataListCommandEventHandler InsertCommand 
    { 
     add 
     { 
      base.Events.AddHandler(EventInsertCommand, value); 
     } 
     remove 
     { 
      base.Events.RemoveHandler(EventInsertCommand, value); 
     } 
    } 
    private static readonly object EventInsertCommand; 
    static BaseFieldGroup() 
    { 
     EventInsertCommand = new object(); 
    } 
    protected virtual void OnInsertCommand(DataListCommandEventArgs e) 
    { 
     DataListCommandEventHandler handler = (DataListCommandEventHandler)base.Events[EventInsertCommand]; 
     if (handler != null) 
     { 
      handler(this, e); 
     } 
    } 
} 

似乎權,但該事件沒有被抓;我不知道爲什麼。但是,我也注意到LinkBut​​ton發送了一個RaiseBubble,我不知道這是否是個問題。任何人都有想法?

哦,這是2.0

回答

0

啊哈!找到並修復;我必須重寫DataList的OnBubbleEvent來容納(調用)新命令。見下:

public abstract class BaseFieldGroup : DataList 
{ 
... 
    protected override bool OnBubbleEvent(object source, EventArgs e) 
    { 
     bool flag = false; 
     if (e is DataListCommandEventArgs) 
     { 
      DataListCommandEventArgs args = (DataListCommandEventArgs)e; 
      this.OnItemCommand(args); 
      flag = true; 
      switch (args.CommandName) 
      { 
       case SelectCommandName: 
        this.SelectedIndex = args.Item.ItemIndex; 
        this.OnSelectedIndexChanged(EventArgs.Empty); 
        return flag; 
       case EditCommandName: 
        this.OnEditCommand(args); 
        return flag; 
       case DeleteCommandName: 
        this.OnDeleteCommand(args); 
        return flag; 
       case UpdateCommandName: 
        this.OnUpdateCommand(args); 
        return flag; 
       case CancelCommandName: 
        this.OnCancelCommand(args); 
        return flag; //?? 
       case InsertCommandName: 
        this.OnInsertCommand(args); 
        return flag; 
      } 
     } 
     return flag; 
    } 
相關問題