[C#] Grid에서의 인덱스 C# 2009. 10. 7. 18:04
보편적으로 그리드 뷰 또는 리스트 뷰를 많이 쓴다

지금은 그 그리드 뷰의 인덱스를 가져오는 것에 대해 잠시 끄적여봐야겠다.

보통 마우스 더블클릭 또는 클릭 이벤트로 각각의 로우 인덱스를 얻으려고 하지만

이벤트 쪽엔 그러한 내용이 없다.

즉 셀에 해당하는 이벤트에는 존재한다.

Rowindex 이다.

사용하는 예는 e.RowIndex 지정하면 int 값으로 그 로우의 인덱스 값을 얻어온다.

리스트 뷰와 그리드 뷰의 장단점은 있지만,

이벤트를 먹여서 원하는 값에 대한 처리를 하기에는 그리드 뷰가 다루기가 더 쉬운 듯 하다.

e라는 인자 값으로 보통 이벤트의 변수가 뜨는데 각기 데이터를 잘 살펴보면 손쉽게 원하는 결과를 얻을 수가 있다.
ArrayList를 사용하는 개발자들이 많을 것이다.

근데 여기에 값을 집어넣으면 object 타입으로 들어간다.

이것을 object 배열 형으로 바꿔주는 것이 ToArray() 이다.

하지만 이것을 ToString() 이나 ToInt32() 등을 해서 원하는 타입으로 바꾸는 것은.. 엄청나게 귀찮은 작업이다.

그래서 이것을 바로 변환 시키는 팁이 다음과 같다.

예를들어 string[] 형으로 저장을 하고자 한다면,

string[] ToStringArray = (string[])ArrayListValue.ToArray(typeof(string));

이렇게 한다면 object[] 형으로 저장된 것들이 string[] 형으로 바뀐다.

1. ListView

ListView의 Item 아래에 집어 넣는다. 솔직히.. Datagrid 보다 이뻐 보인다.

2. DataGrid의 DataTable 이용

DataTable을 만들어서 컬럼을 직접 넣어줘서 연결해 주거나

Row를 추가 해서 해 준다.

3. Datagrid의 DataSet을 이용

솔직히 이것이 제일 나은 듯. 하지만 컬럼명을 지정할 수가 없다.

조회되는 컬럼 자체가 붙어버린다.

어디다가 투표를 해야할지 참.. ㅎㅎ

각기 장단점이 있다보니.. -_-a 좀 갈등이 되네요 ㅎㅎ

솔직히 트랜잭션을 이용해서 서로 다른 DBMS에서 불러오는 것만 아니라면

DataSet을 추천하지만..

아닐 경우는 -_- 어쩔 수 없이 ListView와 DataTable을 이용해야겠죠??

그 외의 방법을 아시는 분들은 꼬릿말 부탁 드립니다 ㅎㅎ

다른 사람들은 어떻게 쓰는지 궁금해요 +_+