마지막으로 이에 대한 해결 방법이 있습니다. 이 코드가 좋은 ASP.NET 실습과 관련이 있는지 확실하지 않지만 트릭을 수행합니다.
public class FirstColumnHeaderGridView : GridView
{
protected override void InitializeRow(GridViewRow row, DataControlField[] fields)
{
DataControlFieldCell cell = new DataControlFieldHeaderCell(fields[0]);
DataControlCellType header = DataControlCellType.DataCell;
fields[0].InitializeCell(cell, header, row.RowState, row.RowIndex);
row.Cells.Add(cell);
DataControlField[] newFields = new DataControlField[fields.Length - 1];
for (int i = 1; i < fields.Length; i++)
{
newFields[i - 1] = fields[i];
}
base.InitializeRow(row, newFields);
}
}
여기서 무슨 일이 일어나는지 설명해 드리겠습니다. GridView
의 특수 유형을 만들고 있는데,이 열의 생성 방법에 관계없이 <th>
태그를 사용하여 첫 번째 열을 렌더링합니다. 이를 위해 InitializeRow
메소드를 오버라이드하고 있습니다. 이 메소드는 기본적으로 행에 대한 셀을 구성합니다. 우리는 첫 번째 셀을 처리하고 표준 GridView
이 나머지를 처리하도록합니다.
셀에 적용하는 구성은 GridView
구현에서 완전히 가져와 <td>
대신 <th>
태그로 렌더링 할 셀이면 충분합니다. 그 해결 방법 사용 후
절대적 표준 - 서버 컨트롤로 우리의 클래스를 등록 평소 GridView
로 사용 : 늦게 게임에
<%@ Register Assembly="WebApplication1" Namespace="WebApplication1" TagPrefix="wa1" %>
...
<wa1:FirstColumnHeaderGridView ID="Grid1" runat="server" ...>
<Columns>
<asp:TemplateField>
<ItemTemplate>
Will be inside th
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
Will be inside td
</ItemTemplate>
</asp:TemplateField>
</Columns>
</wa1:FirstColumnHeaderGridView>
와우. 나는 감동! 훌륭한 해결 방법! 나는 실제로 나의 노력을 돌렸고, 나의 격자를 읽고 있었고, 그 앵글을 연주했던 자바 스크립트를 분해했다. 그러나, 귀하의 코드를 시도하고, 그것은 효과가! 당신의 도움을 주셔서 감사합니다. –