2013-08-16 3 views
0

저는 DatagridviewCombobox 열을 보유하고 있으며 각 행에 DatagridviewCombobox 셀을 만들고 항목을 추가하고 있습니다. (combobox) 셀의 값을 변경하면 Datagridviewcombobox cell value is not valid. 이라는 예외가 발생하고 셀 값이 '1'이됩니다.DatagridViewComboboxCell 값이 C#에서 변경되었습니다

나는 datagridview_currentcelldirtystatechange 이벤트에서 작업을하고 있지만 제대로 작동하지 못했습니다.

아래 코드는 행을 만들고 콤보 박스 셀에 시퀀스 번호를 채우는 코드입니다. 아래

int _rowLimit =1; 

    for (int i = _rowLimit - 1; i < _rowLimit; i++) 
    {   
     datagridview.Rows.Add(); 
     item = i + 1; 
     datagridview[myColumn, i].Value = _rowLimit;     

     DataGridViewComboBoxCell oCell = datagridview.CurrentRow.Cells[myColumn] as DataGridViewComboBoxCell; 
     oCell.Items.Add(item); 

     ((DataGridViewComboBoxColumn)datagridview.Columns[myColumn]).Items.IndexOf(_rowLimit); 
     ((DataGridViewComboBoxColumn)datagridview.Columns[myColumn]).Items.Insert(index, item); 
    } 

그리고

내가 datagridview_currentcelldirtystatechange 이벤트에서 무엇을하고 무엇을 :

for (int innerIndex = 0; innerIndex < datagridview.Rows.Count; innerIndex++) 
    { 
     long sequence = 3; 
     long oldSequence = 2; 
     long tempValue= Convert.ToInt64(datagridview.Rows[innerIndex].Cells[myColumn].Value); 
     if (tempValue <= sequence && tempValue> oldSequence) 
     {      
      datagridview.Rows[innerIndex].Cells[myColumn].Value = tempValue+ 1; // increment the sequence 
// value here i am getting is correct , but it doesn't show in the DatagridviewCombobox cell where it gets changed of gridview and the mentioned exception is thrown. 

     } 

어떤 도움을 주시면 감사하겠습니다. 감사합니다. .

+0

현재 버전이 꽤 혼란 스럽기 때문에 코드에 약간의 순서를 넣어야 할 필요가있는 것처럼 보입니다 (그리고 이것은 거의 확실하게 사용자가 참조하는 오류를 유발하는 것입니다). 첫 번째 코드에서는 다소 무정부 상태로 사용되는 다양한 인덱스를 사용합니다. 더 간단할수록 : coutings 행 (행), 총 행 (maxRow) 변수, 입력 할 항목 (항목, 값 목록, 콤보 상자 또는 필요한 항목)에 대해 하나의 색인을 사용하고 항목 명확하고 단순하며 오류가 발생하지 않는 datagridview에 추가됩니다. – varocarbas

+0

채우기 부분이 제대로 완료되면이 정보 (읽기/편집 용)에 순서대로 액세스해야합니다. 값을 추가하기 전에 그 타입이 주어진 셀이 기대하는/지원되는 타입과 일치하는지 확인해야합니다. 각 단계가 작동하는지 확인하고 문제를 해결하기 위해 여기로 와서 새로운 문제를 물어보십시오. 현재 버전의 코드는 꽤 "비우호적"이며 문제는 어디에서나 발생할 수 있으며 전체 코드를 다시 쓰는 것이 가장 좋은 방법입니다. – varocarbas

+0

답장을 보내 주셔서 감사합니다. 좋아, 좀 더 친숙하게하려고 노력할 것이다. 하지만 내 문제 성명서가있는 경우 작동 방법을 알려주시겠습니까? 실제로는 간단한 콤보 박스이며 콤보 상자 드롭 다운에 시퀀스 번호가 있습니다 ... 나는 그 값 (선택된 인덱스 변경)을 변경하려고합니다. 어떤 이벤트가 작동해야하며 어떻게 달성 될 수 있습니까? 감사합니다. – HKhan

답변

1

selectedindexChange의 콤보 셀 값 DataGridviewComboboxcell 값의 예외에 대한 오류는 자동으로 '1'을 선택한 vlue 변경 않았다 .. 잘못 .. 나 설계자에 DatagridviewComboBoxColumn 속성을 추가함으로써이 문제를 해결 파일.

typeof (long) //이 값은 datagridviewcombobox 열의 값을 표시하고 싶습니다.

문제가 해결되었습니다. 감사합니다. .

+0

귀하의 제안 및 빠른 답장을 보내 주셔서 감사합니다 varocarb .. 감사합니다 :) – HKhan

+0

comboboxcell 실제로 일치하는 형식을 "DataGridviewComboboxcell 값이 유효하지 않습니다" – HKhan