2016-11-01 2 views
0

난 그리드 컨트롤을 가지고 선택한 행의 값을 얻고 싶습니다. 행에서 varchar 형식 셀의 값을 얻을 수 있지만 decimal 형식으로 셀 값을 가져 오는 데 문제가 있습니다. product_price 열 (10,2)의 길이 진수 형태로 설정 그래서 그것의 표시 값이 13,233.00Devexpress Gridview 10 진수 형식 셀에서 행 값을 얻는 방법?

같은입니다

private void gridView1_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e) 
    { 

     var productPrice = Convert.ToDecimal(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "product_price").ToString()); 

     MessageBox.Show(productPrice.ToString()); 
    } 

더 많은 정보를 들면 :

여기에 모든 행 클릭에 대한 내 코드입니다

고맙습니다.이 문제를 해결하는 데 도움을 주실 수 있기를 바랍니다.

+0

무슨 문제가 있습니까? 그것은 예외 또는 다른 것을 던지나요? – Hermanto

+0

흠, 말하기 깜빡 했어요. 예, "객체 참조가 객체의 인스턴스로 설정되지 않았습니다"라는 예외가 발생합니다. 도와주세요 –

+0

코드가 내 컴퓨터에서 작동하지만 그룹화하지 않고 표준보기에서만 작동합니다. 이 gridview에 그룹화를 적용하고 있습니까? – Hermanto

답변

0

제 생각에는 집중된 행이 없습니까? 문제를 추가하고 문제가 해결되는지 확인하십시오.

if (gridView1.SelectedRowsCount == 0) 
    return; 

아니요. 이 System.Decimal 또는 문자열을 말하는가, 당신이 t 통해 시계 (또는 마우스 오버)을 추가 할 때

object o = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "product_price"); 
Type t = o.GetType(); 

: 좋아, 코드에 이것을 추가하고 중단 점을 설정? 이 소수 인 경우에

, 당신은 좋은 모양, 그리고 제가 제안하는 것은 바로 다음에 코드를 변경하는 것입니다해야합니다

var productPrice = Convert.ToDecimal(gridView1.GetRowCellValue(
    gridView1.FocusedRowHandle, "product_price")); 

나는 ToString()했다 생략 유일한 것은, 그래서 우리는 할 수 Convert 함수를 (원시) 객체에 적용합니다. 어떻게 또는 왜, 그리고 실제로는 길게 보이지만 어쩌면 ToString()은 그리드 디스플레이에 따라 출력을 포맷하고있을 것입니다.

나는 그런 경우가 아니라고 생각하며 원래 가정은 MySQL에서 오는 데이터가 실제 문자열로 포맷되거나 C# 코드가 문자열로 읽는다는 점에서 정확합니다. 이 경우 실제 SQL을 실행하고 렌더링되는 데이터 유형을 확인하십시오. 숫자입니까? 그렇다면 C#에서 숫자 (reader.GetDecimal(x))로 읽거나 데이터 유형을 무시하는 reader.GetValue(x).ToString()일까요?

즉, MySQL은 포맷팅을 추가하고 문자열을 전송합니까, 아니면 C#로 10 진수를 문자열로 변경합니까? 그 일을 찾아 내고 그 일을 그만 두십시오.

확실히 문자열의 서식을 해제하고 십진수로 변환 할 수는 있지만 최종 목표에 대한 길고 긴 경로처럼 보입니다.

관련 문제