2010-11-12 10 views
0

J'ai ajouté bouton pour afficher DataGrid mais chaque fois que la fonction est appelée plus d'une fois, puis nouveau bouton ajoute que je dois arrêter cet ajoutDatagrid Voir REPETITION

void AddtoGrid() 
    { 
     try 
     {     
      table = new DataTable(); 
      bcol = new DataGridViewButtonColumn(); 
      bcol.HeaderText = "Action "; 
      bcol.Text = "Delete"; 
      bcol.Name = "deleteUserButton"; 
      bcol.UseColumnTextForButtonValue = true;     

      table.Columns.Add("Name"); 
      table.Columns.Add("Type"); 
      table.Columns.Add("Status"); 
      table.Columns.Add("Date Created"); 
      table.Columns.Add("Action"); 
      for (int i = 0; i < userAction.UserName.ToArray().Length; i++) 
      { 
       row = table.NewRow(); 
       asc.Add(userAction.UserName[i]); 
       row["Name"] = userAction.UserName[i]; 
       row["Type"] = userAction.UserType[i]; 
       row["Status"] = userAction.UserStatus[i]; 
       row["Date Created"] = userAction.DateCrea[i]; 
       row["Action"] = bcol.Text; 
       table.Rows.Add(row); 
      } 

      UsersView.DataSource = table; 
      UsersView.AllowUserToAddRows = false;//To remove extra row at the end 
      UsersView.Columns.Add(bcol); 
     } 
     catch (Exception ca) 
     { 
      MessageBox.Show(ca.ToString()); 
     } 
    }//End Function for Getting Present Users 

Répondre

1

Je ne suis pas sûr que je comprends votre question, bien que je crois que vous devez encapsuler la création de la nouvelle colonne dans sa propre méthode et l'appeler seulement une fois - dans le constructeur par exemple.

Par exemple:

void CreateDeleteColumn() 
{    
    bcol = new DataGridViewButtonColumn(); 
    bcol.HeaderText = "Action "; 
    bcol.Text = "Delete"; 
    bcol.Name = "deleteUserButton"; 
    bcol.UseColumnTextForButtonValue = true; 

    UsersView.Columns.Add(bcol); 
} 

Cela devrait arrêter l'ajout d'une colonne à chaque fois que vous remplissez la vue de la liste.

J'espère que cela aide et désolé si j'ai mal compris.

Tony