2012-11-09 2 views
0

저는 AJAX Control Toolkit을 사용하여 Tabpanels을 만듭니다. 각 패널에는 아래 코드에 따라 gridview가 채워집니다.동적으로 생성 된 Gridview에서 버튼을 만드는 방법은 무엇입니까?

이제 각 행당 하나의 버튼을 추가하고 싶습니다. 클릭하면 그 행의 셀 중 하나를 매개 변수로 전달해야하지만 Gridview가 동적으로 만들어 지므로 어떻게해야할지 모르겠다. 어떤 팁? 다음과 같이

foreach (DataTable dt in DataSet1.Tables) 
{ 
    GridView gv = new GridView(); 
    var thepanel = new AjaxControlToolkit.TabPanel(); 
    gv.DataSource = dt; 
    gv.DataBind(); 
    thepanel.Controls.Add(gv); 
    TabContainer.Controls.Add(thepanel); 
} 
+0

시험 사용해보기 : http://csharp.net-informations.com/datagridview/csharp-datagridview-button.htm – MrFox

답변

0

난 그냥 누구를 위해이 관심 수있는 해결책을 발견 :

gv.RowDataBound += gv_RowDataBound; 
gv.RowCommand += gv_RowCommand; 

그런 다음 Linkbutton을 삽입하도록 RowDataBound를 정의하십시오.

protected void gv_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 

      LinkButton butIgnorar = new LinkButton() 
      { 
       CommandName = "Ignorar", 
       ID = "butIgnorar", 
       Text = "Ignorar", 
       //optional: passes contents of cell 1 as parameter 
       CommandArgument = e.Row.Cells[1].Text.ToString() 
      }; 
      //Optional: to include some javascript cofirmation on the action 
      butIgnorar.Attributes.Add("onClick", "javascript:return confirm('Are you sure you want to ignore?');"); 
      TableCell tc = new TableCell(); 
      tc.Controls.Add(butIgnorar); 
      e.Row.Cells.Add(tc); 
     } 
    } 

마지막으로, 당신이 누군가에게 도움이 있다는 RowCommand

protected void gv_RowCommand(object sender, GridViewCommandEventArgs e) 
    { 

     string currentCommand = e.CommandName; 
     string parameter= e.CommandArgument.ToString(); 

     if (currentCommand.Equals("Ignorar")) 
     { 
      yourMethodName(parameter); 
     } 
    } 

희망에서 명령을 호출!

0

당신은 그리드에 선택 버튼을 추가 할 수 있습니다

먼저, 데이터 바인딩 전에 야 fllwg 라인을 포함해야한다 :

Gridview1.AutoGenerateSelectButton=true; 
관련 문제