.net GridView 필드 동적 생성
요즘은 .net이든 java든 jquery로 그리드를 동적 생성해주거나 jquery grid와 같은 컨포넌트를 이용하기 때문에 필드 동적 생성은 그리 어려지 않습니다.
하지만 .net의 그리드뷰(GridView)를 사용하면서 필드를 동적으로 생성해준다면 어떤 방법으로 생성을 해야 할까요?
하여 오늘은 .net GridView 필드 동적 생성에 대해서 알아볼까 합니다.
먼저 아래와 같이 aspx 소스에 GridView를 생성해 줍니다.
<div id="divGridList" style="overflow-x: scroll; width: 100%;">
<asp:GridView ID="GridList" runat="server" AutoGenerateColumns="false" Width="100%" AllowPaging="false" ShowHeaderWhenEmpty="true" DataKeyNames="Id">
<Columns></Columns>
<HeaderStyle />
<RowStyle />
<EmptyDataRowStyle />
<EmptyDataTemplate>
데이터가 존재하지 않습니다.
</EmptyDataTemplate>
</asp:GridView>
</div>
아무것도 없는 빈 GridView를 만들었습니다.
그리고 다음으로 .aspx.cs 소소를 아래와 같이 만들어 주시면 됩니다.
DataTable dt = new DataTable();
#region 그리드 칼럼 정의 (동적으로 변하는 DB의 내용을 토대로 동적 필드 생성)
DataColumn dcol = new DataColumn("Id", typeof(System.String));
dt.Columns.Add(dcol);
dcol = new DataColumn("칼럼1", typeof(System.String));
dt.Columns.Add(dcol);
// 고정 칼럼 생성
DataColumn dcoWeek = new DataColumn("1주", typeof(System.String));
dt.Columns.Add(dcoWeek);
dcoWeek = new DataColumn("2주", typeof(System.String));
dt.Columns.Add(dcoWeek);
dcoWeek = new DataColumn("3주", typeof(System.String));
dt.Columns.Add(dcoWeek);
dcoWeek = new DataColumn("4주", typeof(System.String));
dt.Columns.Add(dcoWeek);
#endregion
#region 그리드 데이터 Row 정의
for (int nIndex = 0; nIndex < 10; nIndex++)
{
//Create a new row
DataRow drow = dt.NewRow();
//Initialize the row data.
drow["Id"] = "Row-" + Convert.ToString((nIndex + 1));
drow["칼럼1"] = "Row-" + Convert.ToString((nIndex + 1));
//Add the row to the datatable.
dt.Rows.Add(drow);
}
#endregion
//데이터 테이블의 열을 반복하여 데이터 바운드 필드를 동적으로 설정하십시오.
foreach (DataColumn col in dt.Columns)
{
//바운드 필드를 선언
BoundField bfield = new BoundField();
//데이터 필드 값을 초기화하십시오.
bfield.DataField = col.ColumnName;
//HeaderText 필드 값을 초기화하십시오.
bfield.HeaderText = col.ColumnName;
//새로 작성된 바운드 필드를 GridView에 추가하십시오.
gvList.Columns.Add(bfield);
}
//데이터 소스 초기화
gvList.DataSource = dt;
//GridView와 데이터 테이블을 바인딩하십시오.
gvList.DataBind();
이상으로 .net GridView 필드 동적 생성에 관해서 알아보았습니다.
필요하신 분에게 도움이 되는 정보였다면 좋겠네요...ㅎ
하지만 .net의 그리드뷰(GridView)를 사용하면서 필드를 동적으로 생성해준다면 어떤 방법으로 생성을 해야 할까요?
하여 오늘은 .net GridView 필드 동적 생성에 대해서 알아볼까 합니다.
먼저 아래와 같이 aspx 소스에 GridView를 생성해 줍니다.
<div id="divGridList" style="overflow-x: scroll; width: 100%;">
<asp:GridView ID="GridList" runat="server" AutoGenerateColumns="false" Width="100%" AllowPaging="false" ShowHeaderWhenEmpty="true" DataKeyNames="Id">
<Columns></Columns>
<HeaderStyle />
<RowStyle />
<EmptyDataRowStyle />
<EmptyDataTemplate>
데이터가 존재하지 않습니다.
</EmptyDataTemplate>
</asp:GridView>
</div>
아무것도 없는 빈 GridView를 만들었습니다.
그리고 다음으로 .aspx.cs 소소를 아래와 같이 만들어 주시면 됩니다.
DataTable dt = new DataTable();
#region 그리드 칼럼 정의 (동적으로 변하는 DB의 내용을 토대로 동적 필드 생성)
DataColumn dcol = new DataColumn("Id", typeof(System.String));
dt.Columns.Add(dcol);
dcol = new DataColumn("칼럼1", typeof(System.String));
dt.Columns.Add(dcol);
// 고정 칼럼 생성
DataColumn dcoWeek = new DataColumn("1주", typeof(System.String));
dt.Columns.Add(dcoWeek);
dcoWeek = new DataColumn("2주", typeof(System.String));
dt.Columns.Add(dcoWeek);
dcoWeek = new DataColumn("3주", typeof(System.String));
dt.Columns.Add(dcoWeek);
dcoWeek = new DataColumn("4주", typeof(System.String));
dt.Columns.Add(dcoWeek);
#endregion
#region 그리드 데이터 Row 정의
for (int nIndex = 0; nIndex < 10; nIndex++)
{
//Create a new row
DataRow drow = dt.NewRow();
//Initialize the row data.
drow["Id"] = "Row-" + Convert.ToString((nIndex + 1));
drow["칼럼1"] = "Row-" + Convert.ToString((nIndex + 1));
//Add the row to the datatable.
dt.Rows.Add(drow);
}
#endregion
//데이터 테이블의 열을 반복하여 데이터 바운드 필드를 동적으로 설정하십시오.
foreach (DataColumn col in dt.Columns)
{
//바운드 필드를 선언
BoundField bfield = new BoundField();
//데이터 필드 값을 초기화하십시오.
bfield.DataField = col.ColumnName;
//HeaderText 필드 값을 초기화하십시오.
bfield.HeaderText = col.ColumnName;
//새로 작성된 바운드 필드를 GridView에 추가하십시오.
gvList.Columns.Add(bfield);
}
//데이터 소스 초기화
gvList.DataSource = dt;
//GridView와 데이터 테이블을 바인딩하십시오.
gvList.DataBind();
이상으로 .net GridView 필드 동적 생성에 관해서 알아보았습니다.
필요하신 분에게 도움이 되는 정보였다면 좋겠네요...ㅎ
댓글
댓글 쓰기