2012-01-30 14 views
0

私はButtonFieldといくつかのBoundFieldで動的にgridviewを作成しています。 ButtonFieldボタンのタイプはLinkBut​​tonです。私がそれを実行すると、buttonclickはポストバックをトリガーしますが、rowCommandはトリガーされません。私はAutogenerateSelectButtonを使用しても、トリガーされません。このイベントはダイナミックに縛られています。コードは次のとおりです。RowCommandが動的に作成されたGridViewで起動しない

protected void B_Search_Click(object sender, EventArgs e) //Search buttonclick that creates and displays the gridview 
    { 
     gd = getGridView(); //defines the gridview with columns and buttonfield 

     gd.DataSource = executeAdvanceSearch(); //retrieves data from DB as Dataset 
     gd.DataBind(); 

     gd.RowCommand += new GridViewCommandEventHandler(gdView_RowCommand); //Rowcommand event binding 
     PlaceHolder1.Controls.Add(gd); 
    } 

    protected void gdView_RowCommand(object sender, GridViewCommandEventArgs e) //not getting triggered on postback 
    { 
     int index = Convert.ToInt32(e.CommandArgument); 

     GridView gdView = (GridView)sender; 

     if (e.CommandName == "IDClick") 
     { 
      //Do something 
     } 
    } 


    private GridView getGridView() 
    { 
     GridView gdView = new GridView(); 
     gdView.AutoGenerateColumns = false; 

     gdView.AutoGenerateSelectButton = true; 

     string name; 

     string[] field = ZGP.BLL.Search.getResultFormat(Convert.ToInt32(DDL_ResultView.SelectedValue), out name); //Ignore. This jst gets columnNames 

     if (field.Count() != 0) 
     { 
      gdView.Columns.Add(getSelectButton()); //Adds linkbutton 

      foreach (string cName in field) //ignore. This adds columns. 
       if (!String.IsNullOrEmpty(cName)) 
       { 
        gdView.Columns.Add(GV_DataColumn.getGridViewColumn((DataColumnName)Enum.Parse(typeof(DataColumnName), cName))); //Ignore. adds columns 
       } 
     } 

     return gdView; 
    } 

    private ButtonField getSelectButton() 
    { 
     ButtonField _bf = new ButtonField(); 
     _bf.ButtonType = ButtonType.Link; 
     _bf.HeaderText = "ID"; 
     _bf.DataTextField = "ID"; 
     _bf.CommandName = "IDClick"; 
     return _bf; 
    } 

ありがとうございました。

答えて

0

各ポストバックでグリッドビューを作成する必要があります。

+0

セッションでgridviewを保存しようとしました。仕事をしていないすべてのポストバックにイベントをバインドしました。返信ありがとう – Gnani

+0

ありがとう – Gnani

1
if (e.CommandName=="CommandName") 
    { 
     int index = Convert.ToInt32(e.CommandArgument); 
     GridViewRow row = GridView1.Rows[index]; 
     string boundFieldText= row.Cells[0].Text; 
    } 
関連する問題