2012-06-05 4 views
0

DataGrid를 업데이트하려고하지만 불행히도 할 수 없습니다! 내 응용 프로그램에는 데이터가 CSV 파일에서로드되는 DataGrid가 있습니다. 일부 데이터를 업데이트해야합니다. 그러나 그리드의 업데이트를 반영하는 올바른 방법을 찾을 수 없습니다. 여기 DataGrid에서 데이터를 업데이트하는 방법

는 내가 지금까지 무엇을 가지고 :

// Creation of my DataGrid 
this.dataSource = new DataSet(); 
DataTable data = new DataTable("Products");  


data.Columns.Add("Note", System.Type.GetType("System.String")); 
data.Columns.Add("Details", System.Type.GetType("System.String")); 
data.Columns.Add("Net", System.Type.GetType("System.String")); 
data.Columns.Add("Empty Weight", System.Type.GetType("System.String")); 
data.Columns.Add("Full Weight", System.Type.GetType("System.String")); 
data.Columns.Add("Description", System.Type.GetType("System.String")); 
data.Columns.Add("UOM", System.Type.GetType("System.String")); 
data.Columns.Add("Item", System.Type.GetType("System.String")); 

dataSource.Tables.Add(data); 
dataGrid1.DataSource = data; 

사용자 프레스는 "로드"버튼을, 내 그리드에 데이터로드 :

여기
DataTable vehicle = dataSource.Tables[0]; 
. 
. // data is read from CSV 
. 
vehicle.Rows.Add("A sample note", "...", full - empty, empty, full, "Test description", "Gr", i); // an example 

은 내가 갱신을 시도하는 방법을 그리드의 데이터 :

DataTable vehicle = dataSource.Tables[0]; 
vehicle.Rows[0].BeginEdit(); 
vehicle.Rows[0].ItemArray[0] = "TEST COMPLETE";    
vehicle.Rows[0].EndEdit(); 
vehicle.AcceptChanges(); 
dataGrid1.Update(); 

그러나 그리드에 대한 업데이트가 없습니다. 무엇이 누락 되었습니까?

답변

1

는 여기 내 :

SetField 메서드를 사용하여 Grid 행의 데이터를 업데이트 할 수 있습니다.

: 당신은 그리드에서 행을 제거해야하는 경우

DataTable vehicle = dataSource.Tables[0]; 
vehicle.Rows[this.currentRow].SetField(4, "Updating the 5th column in the grid"); 
vehicle.Rows[this.currentRow].SetField(2, "Updating the 3rd column in the grid"); 

것은, 당신이 RemoveAt 방법을 사용할 수있다 : 당신이 변수 currentRow에서 수정할 행 인덱스가 있다고 가정 내 데이터를 수정하는 방법이있다

dataGridTable.Rows.RemoveAt(rowIndexToDelete); 
1

Update 또는 AcceptChanges과 같은 도구를 사용하여 원하는 방식으로 작동시키지 못했습니다. 나는 그들이 나에게 명백한 것보다 다른 뭔가를한다고 생각한다.

또한 별도의 DataTable이 연결된 경우 (즉 기본 포인터를 통해) 알지 못합니다. DataTable을 변경하면 DataGridView에 저장된 데이터가 변경 될 수도 있고 그렇지 않을 수도 있습니다.

나를 위해 다시 지정합니다. 내가 실행 VS없는, 그래서 코드가 100 %입니다 있는지 확실하지 않습니다 : 지상에

private void UpdateTheDataGrid() { 
    dataGrid1.Rows[0].Cells[0].Value = "TEST COMPLETE"; 
} 

참고 :

private void UpdateTheDataGrid() { 
    DataTable vehicle = (DataTable)dataGrid1.DataSource; 
    // vehicle.Rows[0].BeginEdit(); <- Unsure if this is even needed 
    vehicle.Rows[0].ItemArray[0] = "TEST COMPLETE";    
    // vehicle.Rows[0].EndEdit(); 
    vehicle.AcceptChanges(); 
    dataGrid1.DataSource = vehicle; 
} 

또 다른 기술은 DataGridView 컨트롤 자체와 직접 작업하는 것 정확한,하지만 그것은 당신에게 아이디어를 제공해야합니다.

주석으로, 당신의 열을 추가 버전과 버전 사이에 어떤 차이가 있는지 알고 관심이 내가 사용 : 내가 해결 방법 동일한 문제에 직면 개발자의

// Yours 
data.Columns.Add("Note", System.Type.GetType("System.String")); 

// Mine 
data.Columns.Add("Note", typeof(string)); 
+0

포인터 주셔서 감사합니다. 제가 약간 다른 방식으로 문제를 해결했습니다. –

+0

허 ... 내 시간도 +1이 아니야. – jp2code

+1

거기 가서 ... :) –

관련 문제