0

我正在尝试将代码转换为以下方法。
我不知道该怎么做,因为 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 ...一切正常,它在第一个next prev last等...我遇到的问题是在我将代码从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)
     {

     }
4

2 回答 2

1

在 C# 中,它如下所示:

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

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

gridview.PagerPageIndexChanging += gridview_PagerPageIndexChanging;

wheregridview_PagerPageIndexChanging是与上述委托具有相同签名的方法。

于 2013-09-14T02:45:23.753 回答
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)
        {

        }
于 2013-09-16T16:34:33.127 回答