2011-03-14 22 views
8

Objetivo:
Al hacer clic en el botón Agregar o eliminar, la vista de cuadrícula de datos se debe actualizar con los datos más recientes del documento.No se puede actualizar datagridview con bindingsource

Problema:

DataGridView no puede renovarse después de hacer cambios eliminando o añadiendo nuevos datos .

Estoy usando una fuente de enlace que está vinculada con el origen de datos de datagridview.

Probé todo con diferentes soluciones y leí asesorar desde diferentes foros, pero todavía no puedo resolver este problema.

También intenté usar la sintaxis "BindingSource.ResetBindings (false)", "BindingSource.Refresh()" etc. pero no produjo ningún resultado.

enlaces siguientes:

How to refresh a bindingsource

http://www.eggheadcafe.com/community/aspnet/2/10114324/datagridview-refresh-from-another-form.aspx

http://blogs.msdn.com/b/dchandnani/archive/2005/03/15/396387.aspx

http://bytes.com/topic/c-sharp/answers/812061-problem-refresh-datagridview

bSrcStock.DataSource = myProductrepository.GetAllProductList(); 


    dgridStock.DataSource = null; 
    dgridStock.DataSource = bSrcStock; 
    bSrcStock.ResetBindings(true); 


    dgridStock.Columns[0].Width = 101; 
    dgridStock.Columns[1].Width = 65; 
    dgridStock.Columns[2].Width = 80; 
    dgridStock.Columns[3].Width = 120; 
    dgridStock.Columns[4].Width = 90; 
+0

¿A qué está vinculada su cuadrícula de datos? – Purplegoldfish

+0

FYI; No debería necesitar establecer dgridStock.DataSource = null; ¡esa es solo una forma de hacerlo si no ha implementado un BindingSource! – Coops

+1

¿Su tipo de elemento de lista implementa la interfaz INotifyPropetyChanged? –

Respuesta

2

me he enfrentado a este mismo tema y descubrió que el problema es con la inicialización de BindingSource dentro de un constructor estático (La clase era un singleton). Al darme cuenta de esto, moví el código al evento de llamada y finalmente funcionó sin necesidad de asignar null o llamar al método clear. Espero que esto ayude.

1

hay necesidad de definir las columnas (a menos que realmente quieren ...)

A continuación, sólo llamar para el método refreshDataGridView cada vez que se agrega o quita algo de su lista ...

public List<CustomItem> ciList = new List<CustomItem>(); 

    CustomItem tempItem = new CustomItem(); 
    tempItem.Name = "Test Name"; 

    ciList.add(tempItem); 
    refreshDataGridView(); 

    private void refreshDataGridView() 
    { 
     dataGridView1.DataSource = typeof(List<>); 
     dataGridView1.DataSource = ciList; 
     dataGridView1.AutoResizeColumns(); 
     dataGridView1.Refresh(); 
    } 
Cuestiones relacionadas