2012년 10월 30일 화요일

DataGridView에서 셀 변경여부 체크방법

http://mblog.devpia.com/link/?no=2024692

질문&답변※ 꼭 답변채택을 해주시어 성의껏 답변해주신 회원님께 감사의 마음을 전하시길 바랍니다.
 datagridview에서 cell안에 text 변경여부  | Other2010-09-06 오전 11:15:14
김걸 (dominant84)  김걸님께 메시지 보내기김걸님을 내 주소록에 추가합니다.김걸님의 개인게시판 가기번호: 32301  추천:0  / 읽음:449
datagridview안에서 text가 변경된 cell에 한해서 배경색을 바꿔주고

그리고 update할때 그렇게 text가 변경되어 있는 Cell을 포함한 row만

update를 해주고 싶습니다.

데이터를 표시할때는 data set을 사용하여 표시해 주고 있지만

그 adapter안에 들어 있는 update는 DB구조나 쿼리문 때문에 사용 할 수가 없어서

string으로 sql을 만들어서 사용하고 있습니다..

그냥

 For n = 0 To datagridview.RowCount

Next
이렇게 만들어서

 For  n = 0 To datagridview.RowCount
 
   if n 행의  curlumn(3) 의 cell이 바뀌어 있으면
         스트링 형식의  pdate 쿼리 작성
        update실행.
Next

요런식으로 만들어 보려고 합니다.

저기 if문에 어떻게 코딩을 해야 할지 모르겠어서요..;

고수님들께 자문을 구합니다.

이 글에 답변 등록하기
 [답변]1) CellValueChanged이벤트 발생시 건별처리, 2) 일괄처리 방법으로 구성해 볼 수 있습니다2010-09-06 오후 1:11:22
김동국 (newkdg)  김동국님께 메시지 보내기김동국님을 내 주소록에 추가합니다.김동국님의 개인게시판 가기번호: 32305  추천:0  
님께서 원하시는 DataGridView 에 있는 특정 Cell 이 변경되었을 때 Update 처리를 하기 위해서는

1) CellValueChanged 이벤트가 발생하였을 때, 색상지정을 하고 그때, 바로 건별로 Update 처리하는 방법과

2) CellValueChanged 이벤트가 발생하였을 때, 색상지정을 하고, DataGridView에 특정 Cell (Cell변경여부)을 두어서
   Cell변경여부 를 갱신하였다가 나중에 일괄로 Update 처리하는 방법으로 구성해 볼 수 있을 것 입니다.


먼저
1) CellValueChanged 이벤트가 발생하였을 때, 색상지정을 하고 그때, 바로 건별로 Update 처리하는 방법은

    Private Sub DataGridView1_CellValueChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged

        If e.RowIndex >= 0 And (e.ColumnIndex = 3) Then
            DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Style.BackColor = Color.Gold

            ' 이부분에 님께서 준비하신 Update실행 처리를 추가합니다
            ' Update실행()
        End If
    End Sub

다음으로
2) CellValueChanged 이벤트가 발생하였을 때, 색상지정을 하고, DataGridView에 특정 Cell ("Cell변경여부")을 두어서
   Cell변경여부 를 갱신하였다가 나중에 일괄로 Update 처리하는 방법은

    Private Sub DataGridView1_CellValueChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged

        If e.RowIndex >= 0 And (e.ColumnIndex = 3) Then
            DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Style.BackColor = Color.Gold
            DataGridView1.Rows(e.RowIndex).Cells("CELL변경여부).value = "Y"
        End If
    End Sub

    Private Sub Button_DataGridView_CELL변경저장_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_DataGridView_CELL변경저장.Click

        For n = 0 To DataGridView1.RowCount - 1
            If DataGridView1.Rows(n).Cells("CELL변경여부").Value = "Y" Then
                DataGridView1.Rows(n).Cells(3).Style.BackColor = Color.Green

                ' 이부분에 님께서 준비하신 Update실행 처리를 추가합니다
                ' Update실행()

            End If
        Next n
    End Sub
    으로 구성해 볼 수 있습니다.
    여기에서는 미리 "CELL변경여부" CELL 을 DataGridView1에 Add 해놓은 상태이고,
    DataGridView_CELL변경저장 이라는 버튼을 만들고 실행시 해당버튼을 클릭했다는 상황입니다.


즐겁고 행복하세요~~

댓글 없음:

댓글 쓰기