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