이것은 쉽지만 어디에서나 대답을 찾을 수 없습니다. 이전에 만든 DataGridView를 ASP.NET 웹 폼에서 동적으로 DataTable로 채우고 있지만 해당 DataGridView에 나타나는 열의 이름을 변경하려고합니다. 잘못된 작업을 파악할 수 없습니다. . 작동하지 않습니다 DataTable에의 캡션을 변경 값을 설정런타임에 DataGridView에서 열을 변경하십시오.
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";
및 데이터 바인딩 후, DataGridView에 반환을위한 Columns.Count 속성의 열을 0 : 아래는 코드입니다! 코드를 실행 한 후에는 모든 ASP 페이지에서 정상적으로 나타나지만 캡션이 잘못되었습니다. 내가 뭘 잘못하고 있니?
Tks
나는 알고있다. 이 특정 쿼리에서는 열 이름을 제어하지만 프로 시저의 경우에는 그렇지 않습니다. 코드를 통해 동적으로 수행하는 방법을 알지 못합니다. – Pascal