我有一个自定义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调用中指定WHICH调用方法......它总是毫无例外地期望这种方法:
grid1_SelectedIndexChanged(object sender, eventargs e)
但我不希望如此。我希望它转到属性OnRowClick中包含的任何方法名称。
以下是目前为视觉人设置的内容:
就是这样......我不确定。我是一个视觉人,所以也许这对每个人都有所帮助:
自定义控件设置(缩小版):
[其他一些控件
- = gridview = -
其他一些控件]
[(控制事件属性)
OnRowClick事件(GridViewRow eventarg)]
[(控制事件连线)
如果(OnRowClick!= NULL)
this.GridView1.SelectedIndexChanged + = InternalMethod(...)
[(InternalMethod(...))
GridViewRow row = this.GridView1.SelectedRow;
如果(OnRowClick!= NULL)
OnRowClick(行);]]
到目前为止一切都那么好......没有任何问题...但是...当我这样设置时:
HtmlPage
- >自定义控件(mygrid)
---> mygrid.OnRowClick + = SomePageMethod(GridViewRow row)
------> SomePageMethod永远不会被称为......就像...永远......
由于我已经将我的控件构建为复合控件,我无法单步执行其内部代码进行调试,所以我不知道为什么它没有发生......:请帮我搞好这个事件吧!
自定义控制代码:
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);
那个方法永远不会被称为......