2014-01-12 2 views
0

행 헤더를 누르면 DataGridView 셀의 값을 동적으로 업데이트하려고합니다.DataGridView - 동적으로 값 업데이트

값은 업데이트되지만보기가 새로 고쳐지지 않습니다.

void OnRowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) 
{ 
    var databaseRecordId = e.RowIndex; 
    dataGridView1.Rows[e.RowIndex].Cells[0].Value = false; 
} 

간단한 해결책주세요?

+0

문제는 CheckBoxColumn에만 있습니다. – dovid

답변

1

코드가 올 바르고 작동합니다.

private void dgvNews_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) 
{ 
     var databaseRecordId = e.RowIndex; 
     dgvNews.Rows[e.RowIndex].Cells[0].Value = "AAAAAA"; 
} 
+1

예, 권 해드립니다. – susparsy

1

당신은 업데이트 후이 넣을 수 있습니다 :

dataGridView1.refresh();

도움이되는지 확인하기 만하면 몇 가지 다른 아이디어가 있습니다.

0
dataGridView1[0, e.RowIndex].Value = false; 
dataGridView1.EndEdit(); 

또는 :

dataGridView1[0, e.RowIndex].Value = false; 
dataGridView1.RefreshEdit(); 
0

코드는 나를 위해 작동합니다. DataTable 또는 개체 목록 인 데이터 소스를 사용해 보았습니다.

데이터 소스의 유형은 무엇입니까?

익명 형식을 데이터 소스로 사용하고 있습니다. 읽기 전용이므로 익명 형식을 업데이트 할 수 없습니다.

dataTable을 사용하거나 익명 형식을 datatable로 변환하는 메서드를 제공 할 수 있습니다.

이 작동하지 않습니다

  List<MyClass> myList = new List<MyClass>(); 
      myList.Add(new MyClass() { URL = "A", Path = "1" }); 
      myList.Add(new MyClass() { URL = "B", Path = "2" }); 
      myList.Add(new MyClass() { URL = "C", Path = "3" }); 
      myList.Add(new MyClass() { URL = "D", Path = "4" }); 
      myList.Add(new MyClass() { URL = "E", Path = "5" }); 

dataGridView1.DataSource = (from a in myList select new 
             { 
              URL = a.URL, 
              Path = a.Path 
             }).ToList(); 

private void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) 
{ 
      var databaseRecordId = e.RowIndex; 
      dataGridView1.Rows[e.RowIndex].Cells[0].Value = 555; 
} 

를이 (부울 열로 편집) 를 작동하지만

DataTable x = new DataTable(); 
      x.Columns.Add("URL"); 
      x.Columns.Add("PAth"); 
      x.Columns.Add("Boolean"); 

      x.Rows.Add("A", "1", true); 
     x.Rows.Add("B", "1" , false); 
     x.Rows.Add("C", "1" , true); 
     x.Rows.Add("D", "1" , true); 
     x.Rows.Add("E", "1", true); 
     x.Rows.Add("F", "1", true); 
     x.Rows.Add("G", "1",true); 

dataGridView1.DataSource = x; 


    private void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) 
    { 
     var databaseRecordId = e.RowIndex; 
     dataGridView1.Rows[e.RowIndex].Cells[2].Value = false; 
    } 

도움이 되었기를 바랍니다.

+0

문제는 bool 유형에만 있습니다. – dovid

+0

미안하지만 무슨 뜻인지 모르겠다. 익명 형식의 데이터 소스에서 문자열 유형을 업데이트 할 수 있습니까? – user3185569

+0

Boolean-Column을 사용하여 DataTable을 시도한 결과를 확인하십시오. – dovid