1

我有一个自定义的gridview,并且我在RowDataBound 上手动为onclick 生成一个回发事件。但是,这个回发总是去/期望行点击的特定方法。

这是我当前使回发发生的代码:

if (!String.IsNullOrEmpty(this.OnRowClick))
                e.Row.Attributes.Add("onclick", this.Page.ClientScript.GetPostBackEventReference(this.grid1, "Select$" + e.Row.RowIndex.ToString()));

正如您在此处看到的,我已经为我的网格设置了一个属性,以询问在执行回发时要调用哪个方法...但是,我似乎无法在网络上的任何地方找到如何在 _dopostback 调用中指定要调用的方法...它总是无一例外地期望这种方法:

grid1_SelectedIndexChanged(object sender, eventargs e)

但我不想那样。我希望它转到属性 OnRowClick 中包含的任何方法名称。

以下是视觉人员当前的设置方式:

就是这样……我不确定。我是一个视觉型的人,所以也许这对每个人都有一点帮助:

自定义控件设置(缩小版):

[其他一些控件

-= 网格视图 =-

其他一些控制]

[(控制事件属性)

OnRowClick 事件 (GridViewRow eventarg)]

[(控制事件连线)

如果(OnRowClick!= null)

this.GridView1.SelectedIndexChanged += InternalMethod(...)

[(内部方法(...))

GridViewRow 行 = this.GridView1.SelectedRow;

如果(OnRowClick!= null)

OnRowClick(行);]]

到目前为止一切顺利......没有任何问题......但是......当我这样设置时:

网页

-> 自定义控件(mygrid)

---> mygrid.OnRowClick += SomePageMethod(GridViewRow 行)

------> SomePageMethod 永远不会被调用...就像...永远...

由于我已将控件构建为复合控件,因此我无法通过其内部代码进行调试,所以我不知道为什么它没有发生......:S请帮我正确地冒泡这个事件!

自定义控制代码:

    this.grid1.SelectedIndexChanged += new EventHandler(grid1_SelectedIndexChanged);

    void grid1_SelectedIndexChanged(object sender, EventArgs e)
    {
        GridViewRow row = this.grid1.SelectedRow;
        if(this.OnRowClick!=null)
            OnRowClick(this.grid1, row);

    }

    #region Events
    public delegate void RowClickEventHandler(object sender, GridViewRow SelectedRow);
    [Category("Events")]
    [Description("This event fires when a row is clicked, if it is defined")]
    public event RowClickEventHandler OnRowClick;
    #endregion

网页代码:

this.pgrSummary.OnRowClick += new SimplePager.SimplePager.RowClickEventHandler(pgrSummary_OnRowClick);

而且那个方法永远不会被调用......

4

0 回答 0