데이타테이블 컬럼위치 바꾸기
전에 데이타그리드뷰를 다뤄보다가 열이동을 보다가 직접 만들어본 메서드임.
// 데이타 테이블에 담긴 컬럼을 위치를 바꾸는 메서드.
private DataTable ChangColumn(DataTable sourceDt ,int ColumnIndex1 , int ColumnIndex2 )
{
DataTable dt = new DataTable();
if( sourceDt == null) return dt;
for(int i = 0; i < sourceDt.Columns.Count ; i ++)
{
if( i == ColumnIndex1)
{
dt.Columns.Add( sourceDt.Columns[ ColumnIndex2 ].ColumnName );
}
else if ( i == ColumnIndex2 )
{
dt.Columns.Add( sourceDt.Columns[ ColumnIndex1 ].ColumnName );
}
else
{
dt.Columns.Add( sourceDt.Columns[i].ColumnName );
}
}
foreach( DataRow dr in sourceDt.Rows )
{
DataRow insertDr = dt.NewRow();
for(int j = 0; j < dr.ItemArray.Length ; j ++)
{
if( j == ColumnIndex1)
{
insertDr[j] = dr[ ColumnIndex2 ];
}
else if ( j == ColumnIndex2 )
{
insertDr[j] = dr[ ColumnIndex1 ];
}
else
{
insertDr[j] = dr[ j ];
}
}
dt.Rows.Add( insertDr );
}
return dt;
}
// datatable.Rows.Insert() 와 datatable.ImportRow()
에서
같은 Hash코드를 가진(동일 메모리 공간) Row를 DataTable에 입력시
ImportRow는 적용되지만 Insert()는 안됨.
해당 RowCollection 과 관련되어
Insert시 해당 컬렉션에 DataRow가 존재하며 에러 반환.
Import는 있든 없든 무조건 DataRow를 복사해서 추가함.
ex)
1 : DataRow drd = ds.Tables[0].NewRow();
2 : DataRow drd = ds.Tables[0].Rows[0];
ds.Tables[0].Rows.Add( drd);
ds.Tables[0].ImportRow( drd );
2 -> Add나 Insert 는 안들어감. Import는 들어감.
'# 2) .Net ( Vs 2005 ) > 기타' 카테고리의 다른 글
드래그 앤 드랍! (0) | 2009.05.09 |
---|---|
Ms-Sql을 띠우자! (0) | 2009.05.08 |
이벤트 (0) | 2009.05.08 |
Enum 과 Enum 비트 마스크 (0) | 2009.05.08 |
Xml 직렬화... (0) | 2009.05.08 |