我有一个自定义的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);
而且那个方法永远不会被调用......