Gridview Vb到C#代码转换与Raise事件
我正在尝试转换以下方法的代码。Gridview Vb到C#代码转换与Raise事件,gridview,vb.net-to-c#,Gridview,Vb.net To C#,我正在尝试转换以下方法的代码。 我不知道该怎么办,因为在C#中没有一个类似的方法来引发这一事件 我想做的是,Gridviewpage index changing被冒泡到我的UI中,这样我就可以在事件中执行一些代码了,现在什么都没有发生,因为这是一个设置为Gridview的自定义寻呼机模板类 public delegate void PageIndexChanging(object sender, GridViewPageEventArgs e); public event
我不知道该怎么办,因为在C#中没有一个类似的方法来引发这一事件 我想做的是,
Gridview
page index changing被冒泡到我的UI中,这样我就可以在事件中执行一些代码了,现在什么都没有发生,因为这是一个设置为Gridview的自定义寻呼机模板类
public delegate void PageIndexChanging(object sender, GridViewPageEventArgs e);
public event PageIndexChanging PagerPageIndexChanging;
Private Sub NextLinkBtn_Click(ByVal Sender As Object, ByVal e As EventArgs) Handles NextLinkBtn.Click
Dim gridView As GridView = _container.NamingContainer.NamingContainer
If (gridView.PageIndex < gridView.PageCount - 1) Then
gridView.PageIndex = gridView.PageIndex + 1
End If
FormatPager(gridView)
'Raise PagerPageIndexChanging, passing it the GridView instance using this custom pager template.
RaiseEvent PagerPageIndexChanging(gridView, New GridViewPageEventArgs(gridView.PageIndex))
End Sub
然后在grids init方法中,我将gridpager模板附加到grids.PagerTemplate。。。一切正常,它做第一个,下一个,上一个,最后一个等等。。。我遇到的问题是,在我将代码从Vb.net转换为C#之后,我无法从PagerTemplate类引发事件,以便在网页上执行它
protected void ui_grdGuests_Init(object sender, EventArgs e)
{
if (GridPagerTemplate != null)
{
ui_grdGuests.PagerTemplate = GridPagerTemplate;
}
}
尝试在web表单中放置断点,因为在执行pagertemplate中的代码后,需要在此处获取断点
protected void ui_grdGuests_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
}
在C#中,它如下所示:
if (PagerPageIndexChanging != null)[
{
PagerPageIndexChanging(gridView, new GridViewPageEventArgs(gridView.PageIndex))
}
事先,您需要在某处订阅活动,例如:
gridview.PagerPageIndexChanging += gridview_PagerPageIndexChanging;
其中,
gridview\u pagerPageIndexchange
是一个与上面的代理具有相同签名的方法。好的,我找到了。我是这样做的
寻呼机模板有一个委托和一个事件
public delegate void PageIndexChangingHandler(object sender, GridViewPageEventArgs e);
public event PageIndexChangingHandler PagerPageIndexChanging;
private void NextLinkBtn_Click(object sender, EventArgs e)
{
_gridView = _container.NamingContainer.NamingContainer as GridView;
if (_gridView != null && (_gridView.PageIndex < _gridView.PageCount - 1))
{
_gridView.PageIndex = _gridView.PageIndex + 1;
_gridView.SelectedIndex = -1;
}
FormatPager(_gridView);
//Raise PagerPageIndexChanging, passing it the GridView instance using this custom pager template.
if (PagerPageIndexChanging != null)
{
PagerPageIndexChanging(_gridView, new GridViewPageEventArgs(_gridView.PageIndex));
}
}
我想我还没有完全理解。。。GridView没有PagerPageIndexChanging事件,它有一个_GridView.PageIndexChanging+=新的GridViewPageEventHandler(this._GridView\u PageIndexChanging);所以我试着这么做,但是当它返回到网页时,它再也不会返回到网页上的PageIndexchange方法。我将编辑我的问题,尝试解释更多。
public delegate void PageIndexChangingHandler(object sender, GridViewPageEventArgs e);
public event PageIndexChangingHandler PagerPageIndexChanging;
private void NextLinkBtn_Click(object sender, EventArgs e)
{
_gridView = _container.NamingContainer.NamingContainer as GridView;
if (_gridView != null && (_gridView.PageIndex < _gridView.PageCount - 1))
{
_gridView.PageIndex = _gridView.PageIndex + 1;
_gridView.SelectedIndex = -1;
}
FormatPager(_gridView);
//Raise PagerPageIndexChanging, passing it the GridView instance using this custom pager template.
if (PagerPageIndexChanging != null)
{
PagerPageIndexChanging(_gridView, new GridViewPageEventArgs(_gridView.PageIndex));
}
}
GridPagerTemplate.PagerPageIndexChanging += new Classes.PagerTemplate.PageIndexChangingHandler(GridPagerTemplate_PagerPageIndexChanging);
void GridPagerTemplate_PagerPageIndexChanging(object sender, GridViewPageEventArgs e)
{
}