Datagridview 바인딩 중 row 에 특정 Column의 value 를 가져오고 싶습니다

안녕하세요…

제목 그대로 datagridview 바인딩 중 일 때 row 에 특정 Column 값을 가져오고 싶은데…

바인딩 중에 발생하는 이벤트가 어떤 건지 좀 알려주세요.

RowsAdded, CellValueNeeded 두개의 이벤트를 사용해 봤는데…

제가 잘 못하는 건지 안되더군요…

3개의 좋아요

@조이_엔 환영합니다. :smile:

혹시 DataGridView면 Winform인가요?

DataGridView.CellValueChanged일 것 같은데 맞을까요?

3개의 좋아요

답변 감사합니다.

저의 질문이 명확하질 않았네요…죄송합니다.

제가 원하는 건 바인딩이 되는 중에

현재 바인딩 되는 Row 에 첫번째 Column 의 값을 가지고 오고 싶습니다.

감사합니다.

2개의 좋아요

선택한 row의 Column 값을 가져오시는 거면 SelectionChanged를 사용해서 파라미터를 살펴보는게 좋을 것 같습니다.
이벤트 함수에 브레이크포인트를 걸고 EventArgs로 들어오는 값을 한번 확인해보세요.

2개의 좋아요

답변 감사합니다.
선택한 행은 아니구요…
현재 바인딩 되는 행에서 첫번째 열의 값을 가져오고 싶습니다.
감사합니다.

2개의 좋아요

저도 이거일꺼라 생각했습니다 근데 아니였네요 ㅠㅠ

2개의 좋아요

위 두분 답변 감사합니다…
결국 이벤트는 찾지 못하고…
grid 에 데이타를 직접 바인딩 해서 넣지 않고.
데이타를 loop 돌면서 grid 에 add 했습니다.

add 시 loop 돌때 원하는 작업을 하는 걸로 해서 처리 했습니다.

감사합니다.

그런데 제가 질문한 내용 원하는 답변 없음으로 완료 처리를 할 수가 없나 보네요…

해결책 체크는 있는데… 질문 완료 같은 기능은 없나보네요…

2개의 좋아요

해결하셨다니 다행입니다. :smile:

처리하신 부분을 코드로 남겨주시면 다른 분들에게도 좋을 것 같아요!
(그리고 코드로 남겨 주시면 다른 방법이 나올 수 도 있고요.)

@조이_엔 직접 해결하신 방법을 해결책으로 선택해주시면 될 것 같습니다.

1개의 좋아요

@조이_엔 님께서 질문한 내용에 대해 자세히 답변드리고 싶었지만 제가 질문을 잘못 이해한 것 같아요…
이미 차선책으로 해결하셨지만 제가 궁금한 점을 여쭤볼께요.

바인딩 된 데이터에서 직접 원하는 컬럼의 데이터를 가져오는 건 어떤가요?
보통 Collection 형태의 데이터일텐데, Linq 구문 이용해서 가져올 수도 있을 것 같아서요.

public class SomeData
{
   public int Num { get; set; }
   public string Name { get; set; }
}

...

public List<SomeData> DataGridSource { get; set; }

...

var nameList = DataGridSource.Where(row => row.Name).ToList();
3개의 좋아요

댓글을 이제야 봤네요…죄송합니다.

말씀 처럼 linq 를 사용해서 해도 될거 같네요…

담에 다른 작업할 때 참고 하도록 하겠습니다.

감사합니다.

3개의 좋아요

답변이 늦어 죄송합니다…

제가 처리한 코드 입니다…

간단하고 허접한 코드입니다.

depth1_code 의 값이 변함에 따라 depth1_name 변수의 값이 바껴서 grid 에 add 되게 했습니다.


            JObject send_Json = new JObject();
            JObject receive_Json = JObjectConn.JObjectJson(url, send_Json);
            JArray receive_Jarr = JArray.Parse(receive_Json["datas"].ToString());

            int loopIndex = 0;
            foreach (JObject item in receive_Jarr)
            {
                depth1_code = item["depth1_code"].ToString();
                depth1_name = item["depth1_name"].ToString();
                depth2_code = item["depth2_code"].ToString();
                depth2_name = item["depth2_name"].ToString();                    

                if (depth1_code == before_depth1_code)
                {
                    depth1_name = "";
                } 
                else
                {
                    before_depth1_code = depth1_code;
                }
         
                dgView.Rows.Add(); 

                //-- 2. 추가한 row 의 Column 에 값을 넣는다.
                dgView[0, loopIndex].Value = depth1_name;
                dgView[0, loopIndex].ReadOnly = true;
                dgView[1, loopIndex].Value = false;                    
                dgView[2, loopIndex].Value = depth2_code;
                dgView[3, loopIndex].Value = depth2_name;
                dgView[3, loopIndex].ReadOnly = true;

                loopIndex++;
            }
2개의 좋아요