2

別のGridView内でGridViewを使用したasp.net3.5(c#)でプロジェクトを実行しています。ただし、問題は、子GridViewのPageIndexChangingイベントの使用方法がわからないことです。解決策をお持ちの方は、私を助けてください。よろしくお願いします。2つのグリッドを埋めるコードをアップロードしています。

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 に答える