title: Change Column from DataGridView in runtime
body: <p>This is probably easy, but I couldn't find an answer anywhere. I'm filling a previously created DataGridView on an ASP.NET Web Form dynamically with a DataTable, but I want to change the name of the columns that appear on that DataGridView, and I simply can't figure out what I'm doing wrong. Below is the code:</p>
  
  <pre><code>DataTable dtUsuarios = DBManager.RunSqlGetDataTable(
    @"select b.UserName, c.Email, c.IsLockedOut, c.LastLoginDate, 
        case 
          when e.RoleName is not null then 1
          else 0 end Admin
      from dbo.aspnet_Applications a join dbo.aspnet_Users b
        on a.ApplicationId = b.ApplicationId
      join dbo.aspnet_Membership c
        on b.ApplicationId = c.ApplicationId
        and b.UserId = c.UserId
      left join dbo.aspnet_UsersInRoles d
        on d.UserId = b.UserId
      left join dbo.aspnet_Roles e
        on d.RoleId = e.RoleId
      where a.ApplicationName = 'Mont Blanc Catalogo'");
  dtUsuarios.Columns["UserName"].Caption = "Nome Usuário";
  dtUsuarios.Columns["Email"].Caption = "E-mail";
  dtUsuarios.Columns["IsLockedOut"].Caption = "Bloqueado";
  dtUsuarios.Columns["LastLoginDate"].Caption = "Último Login";
  dtUsuarios.Columns["Admin"].Caption = "Administrador";
  DataView dvUsuarios = new DataView(dtUsuarios) { Sort = "UserName" };
  gdvUsuarios.DataSource = dvUsuarios;
  gdvUsuarios.DataBind();
  //gdvUsuarios.Columns[0].HeaderText = "Nome Usuário";
  //gdvUsuarios.Columns[1].HeaderText = "E-mail";
  //gdvUsuarios.Columns[2].HeaderText = "Bloqueado";
  //gdvUsuarios.Columns[3].HeaderText = "Último Login";
  //gdvUsuarios.Columns[4].HeaderText = "Administrador";
  </code></pre>
  
  <p>Setting the values changing the caption of the DataTable doesn't work, and after the DataBind, the Columns.Count property for the DataGridView return zero columns! After executing the code, everything appears normally at my asp page, but the captions are wrong. What I am doing wrong?<br>
  Tks</p>