* GridView 수동 행 추가
GridView에서 특정 버튼을 눌러서 행추가를 할려고 근 1주일넘게 삽질을 하다가 하나의 꼼수를 생각해냈다 --;;
여기저기 자료를 찾아보니
SqlDataSource를 사용하면 insert() 함수로 간단히 추가가 가능한 거 같은데
살펴보니 내가 원하는 방식은 아니다.
내가 원하는 방식은 따로 버튼을 두어 해당 버튼이 클릭이 되면 행이 추가가 되도록 하고 싶었는데
머리가 둔한건지 근 1주일 넘게 삽질하다 생각해낸게 아래 소스 방식이다 ㅡ,.ㅡ
하아~ 벌써 끝날 프로젝트인데 종료가 안된 상황에서 다른 프로젝트 투입되느라 작업시간도 없거니와
ASP.Net은 이번에 처음 만지는거라 작업시간이 오래 걸리네 (원래 난 JSP, JAVA만 쭈욱 해왔다;;)
1. 행추가 꼼수를 위해 aspx 소스 아무 위치에 HiddenField를 다음과 같이 하나 둔다.
<asp:HiddenField ID="rowcnt" runat="server" Value="0" />
2. aspx.cs 파일에 버튼 클릭 이벤트 함수에 다음과 같이 작업
protected void imgBtnInsRow_Click(object sender, ImageClickEventArgs e)
{
int curRowCnt =
int.Parse(((HiddenField)Master.FindControl("MainContent").FindControl("rowcnt")).Value);
curRowCnt = curRowCnt + 1;
((HiddenField)Master.FindControl("MainContent").FindControl("rowcnt")).Value = curRowCnt.ToString();
insertRow();
}
3. insertRow() 함수
private void insertRow()
{
int curRowCnt =
int.Parse(((HiddenField)Master.FindControl("MainContent").FindControl("rowcnt")).Value);
// Create a DataTable
DataTable table = new DataTable();
// Create a DataColumn and set various properties
DataColumn column1 = new DataColumn();
column1.DataType = Type.GetType("System.String");
column1.AllowDBNull = true;
column1.Caption = "ITEM";
column1.ColumnName = "ITEM";
// Add the column to the table
table.Columns.Add(column1);
for (int i = 1; i <= 12; i++)
{
DataColumn column2 = new DataColumn();
column2.DataType = Type.GetType("System.Decimal");
column2.AllowDBNull = true;
column2.Caption = i.ToString();
column2.ColumnName = i.ToString();
table.Columns.Add(column2);
}
// Add Row and set values
DataRow row;
for (int i = 0; i < curRowCnt; i++)
{
row = table.NewRow();
row["ITEM"] = "";
for (int j = 1; j <= 12; j++)
{
row[j] = 0;
}
// Be sure to add the new row to the
// DataRowCollection.
table.Rows.Add(row);
}
DataSet ds = new DataSet();
ds.Tables.Add(table);
gridDetail.DataSource = ds;
gridDetail.DataBind();
}
--> 위 소스에 대해서 간략하게 설명을 하면 행추가 버튼을 클릭을 하면 HiddenField인 rowcnt를 1씩 증가시키고 그 값을 insertRow() 함수 빨간색 부분 첫번째 for문에서 사용한다.
행추가 버튼을 눌러 증가된 rowcnt만큼 반복하면서 행을 하나씩 추가한다.
아무리 생각해도 허접한 삽질소스이지만 일단 원하는 행추가는 되니까 뭐 일단은 이렇게라도 쓰자;;
GridView에서 특정 버튼을 눌러서 행추가를 할려고 근 1주일넘게 삽질을 하다가 하나의 꼼수를 생각해냈다 --;;
여기저기 자료를 찾아보니
SqlDataSource를 사용하면 insert() 함수로 간단히 추가가 가능한 거 같은데
살펴보니 내가 원하는 방식은 아니다.
내가 원하는 방식은 따로 버튼을 두어 해당 버튼이 클릭이 되면 행이 추가가 되도록 하고 싶었는데
머리가 둔한건지 근 1주일 넘게 삽질하다 생각해낸게 아래 소스 방식이다 ㅡ,.ㅡ
하아~ 벌써 끝날 프로젝트인데 종료가 안된 상황에서 다른 프로젝트 투입되느라 작업시간도 없거니와
ASP.Net은 이번에 처음 만지는거라 작업시간이 오래 걸리네 (원래 난 JSP, JAVA만 쭈욱 해왔다;;)
1. 행추가 꼼수를 위해 aspx 소스 아무 위치에 HiddenField를 다음과 같이 하나 둔다.
<asp:HiddenField ID="rowcnt" runat="server" Value="0" />
2. aspx.cs 파일에 버튼 클릭 이벤트 함수에 다음과 같이 작업
protected void imgBtnInsRow_Click(object sender, ImageClickEventArgs e)
{
int curRowCnt =
int.Parse(((HiddenField)Master.FindControl("MainContent").FindControl("rowcnt")).Value);
curRowCnt = curRowCnt + 1;
((HiddenField)Master.FindControl("MainContent").FindControl("rowcnt")).Value = curRowCnt.ToString();
insertRow();
}
3. insertRow() 함수
private void insertRow()
{
int curRowCnt =
int.Parse(((HiddenField)Master.FindControl("MainContent").FindControl("rowcnt")).Value);
// Create a DataTable
DataTable table = new DataTable();
// Create a DataColumn and set various properties
DataColumn column1 = new DataColumn();
column1.DataType = Type.GetType("System.String");
column1.AllowDBNull = true;
column1.Caption = "ITEM";
column1.ColumnName = "ITEM";
// Add the column to the table
table.Columns.Add(column1);
for (int i = 1; i <= 12; i++)
{
DataColumn column2 = new DataColumn();
column2.DataType = Type.GetType("System.Decimal");
column2.AllowDBNull = true;
column2.Caption = i.ToString();
column2.ColumnName = i.ToString();
table.Columns.Add(column2);
}
// Add Row and set values
DataRow row;
for (int i = 0; i < curRowCnt; i++)
{
row = table.NewRow();
row["ITEM"] = "";
for (int j = 1; j <= 12; j++)
{
row[j] = 0;
}
// Be sure to add the new row to the
// DataRowCollection.
table.Rows.Add(row);
}
DataSet ds = new DataSet();
ds.Tables.Add(table);
gridDetail.DataSource = ds;
gridDetail.DataBind();
}
--> 위 소스에 대해서 간략하게 설명을 하면 행추가 버튼을 클릭을 하면 HiddenField인 rowcnt를 1씩 증가시키고 그 값을 insertRow() 함수 빨간색 부분 첫번째 for문에서 사용한다.
행추가 버튼을 눌러 증가된 rowcnt만큼 반복하면서 행을 하나씩 추가한다.
아무리 생각해도 허접한 삽질소스이지만 일단 원하는 행추가는 되니까 뭐 일단은 이렇게라도 쓰자;;
[ASP.Net2.0 관련 글모음]
2008/07/29 - [프로그래밍/ASP .Net] - [ASP.Net2.0] GridView RowSpan 적용예제
2008/08/01 - [프로그래밍/ASP .Net] - [ASP.Net2.0] GridView 웹 서버 컨트롤에 바인딩된 행에 대한 대량 업데이트 수행
2008/08/11 - [프로그래밍/ASP .Net] - [ASP.Net2.0] 마스터 페이지 사용시 Request 문제
2008/08/11 - [프로그래밍/ASP .Net] - [ASP.Net2.0] GridView를 Excel 출력하기
2008/08/12 - [프로그래밍/ASP .Net] - [ASP.Net2.0] XML 문서 만들기 & 이미지 문서 만들기
2008/08/26 - [프로그래밍/ASP .Net] - [ASP.Net2.0] GridView에서 사용하는 이벤트들 정리
2008/08/27 - [프로그래밍/ASP .Net] - [ASP.Net2.0] 웹사이트에 ASP.NET AJAX 사용할 수 있게 설정
2008/07/29 - [프로그래밍/ASP .Net] - [ASP.Net2.0] GridView RowSpan 적용예제
2008/08/01 - [프로그래밍/ASP .Net] - [ASP.Net2.0] GridView 웹 서버 컨트롤에 바인딩된 행에 대한 대량 업데이트 수행
2008/08/11 - [프로그래밍/ASP .Net] - [ASP.Net2.0] 마스터 페이지 사용시 Request 문제
2008/08/11 - [프로그래밍/ASP .Net] - [ASP.Net2.0] GridView를 Excel 출력하기
2008/08/12 - [프로그래밍/ASP .Net] - [ASP.Net2.0] XML 문서 만들기 & 이미지 문서 만들기
2008/08/26 - [프로그래밍/ASP .Net] - [ASP.Net2.0] GridView에서 사용하는 이벤트들 정리
2008/08/27 - [프로그래밍/ASP .Net] - [ASP.Net2.0] 웹사이트에 ASP.NET AJAX 사용할 수 있게 설정