使用Raise Event进行Vb到C#代码转换

时间:2013-09-14 02:16:50

标签: gridview vb.net-to-c#

我正在尝试转换以下方法的代码 我不知道如何去做,因为在C#中没有相应的东西来提升事件。

我想要发生的是Gridview页面索引更改冒泡到我的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

关于这个问题的更多细节。

我在aspnet页面上有一个gridview。我有一个pagertemplate的类级别变量

 public PagerTemplate GridPagerTemplate = new PagerTemplate();

然后在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)
     {

     }

2 个答案:

答案 0 :(得分:1)

在C#中,它看起来如下:

if (PagerPageIndexChanging != null)[
{
    PagerPageIndexChanging(gridView, new GridViewPageEventArgs(gridView.PageIndex))
}

事先,您需要在某处订阅该事件,例如:

gridview.PagerPageIndexChanging += gridview_PagerPageIndexChanging;

其中gridview_PagerPageIndexChanging是与上述代理签名相同的方法。

答案 1 :(得分:0)

好吧我明白了。我就是这样做的。

寻呼机模板有一个委托和一个事件

 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)
        {

        }