2

我在 asp.net 3.5 (c#) 中做一个项目,我在另一个 GridView 中使用了一个 GridView。然而,问题是我不知道如何为子 GridView 使用 PageIndexChanging 事件。任何有解决方案的人请帮助我..!!在此先感谢..我正在上传填充两个网格的代码..

private void dynamic_GV1()
{
    DataSet ds_news_details = new DataSet();
    DataSet ds_pic_preview = new DataSet();
    ds_news_details = BL_News.News_Details_Top10_Select();
    if (ds_news_details.Tables[0].Rows.Count > 0)
    {
        GridView1.DataSource = ds_news_details;
        GridView1.DataBind();
        int counter;
        for(counter = 0 ; counter < ds_news_details.Tables[0].Rows.Count; counter++)
        {
            GridView gv_pic = (GridView)GridView1.Rows[counter].FindControl("GridView2");
            ds_pic_preview = BL_News.News_Pictures_Select(Convert.ToInt32(ds_news_details.Tables[0].Rows[counter][0].ToString()));
            gv_pic.DataSource = ds_pic_preview;
            gv_pic.DataBind();
        }
    }
}
4

1 回答 1

0

您可以在同一个循环中以编程方式将事件处理程序附加到您的子程序GridView(您将数据绑定到它们)。请注意,这假设您要使用相同的功能处理它们:

for(counter = 0 ; counter < ds_news_details.Tables[0].Rows.Count; counter++)
{
    GridView gv_pic = (GridView)GridView1.Rows[counter].FindControl("GridView2");

    // Attach event handler here
    gv_pic.PageIndexChanging += yourEventHandlerName;

    ds_pic_preview = BL_News.News_Pictures_Select(Convert.ToInt32(ds_news_details.Tables[0].Rows[counter][0].ToString()));
    gv_pic.DataSource = ds_pic_preview;
    gv_pic.DataBind();
}

其中“ yourEventHandlerName ”是要用作 PageIndexChanging 事件处理程序的函数的名称:

protected void yourEventHandlerName(Object sender, GridViewPageEventArgs e)
{

}

您可以将“sender”变量转换回 GridView 以检查它并找出哪个子GridView触发了事件,我想。像这样的东西应该工作:

GridView currentGrid = (GridView)sender;
于 2013-03-12T18:34:38.260 回答