c # - Kan ikke opdatere kilden til DataGridView

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg ved, at dette spørgsmål blev spurgt millioner gange, men jeg brugte mange råd fra der og det virker stadig ikke for mig. Her er mit forsøg:


    private void Apply\_Click(object sender, EventArgs e)
    {
        Form addIncForm = DataProcessing.newIncident(Incident.Text);
        addIncForm.FormClosed += (s, ex) =>
        {
            this.inciView.DataSource = null;
            this.inciView.DataSource = this.incidentBindingSource;
            this.inciView.Invalidate();
            this.inciView.Refresh();
            this.inciView.Parent.Refresh();
        };
        addIncForm.Show();
    }


Først når jeg lukker og åbner 'denne' form kan jeg se ændringerne af inciView. Hvorfor virker denne hårde forfriskning (ingen af ​​metoderne) ikke, og hvordan skal man opdatere det?


Jeg tror, ​​jeg skal tvinge opdatering af DataSet på en eller anden måde.

Bedste reference


Der er to metoder, der vil fungere:



  1. Lav det formular, du bruger til at redigere dine data modal ved at bruge ShowDialog () for at åbne den. Efter opkaldet til ShowDialog() tilføj kode til requery og genbind din DataGridView til sin datakilde. [5]

  2. Tilføj en begivenhed til din dataindtastningsformular, der informerer lytterne om, at din database er blevet opdateret. Formularen, der åbner din dataindtastningsformular, abonnerer på denne begivenhed og i koden, der kører, når begivenheden udløser krav og genbinder din DGV.



Når jeg siger requery og rebind din DGV mener jeg, hvad du gør nu for at indlæse data i din DGV (dvs. spørge din database og indstille en DataSource).


I den første tilgang, der viser dataregistreringsformularen modalt, stoppes effektiviteten af ​​din hovedformular effektivt, indtil brugeren er færdig med dataindtastningsformularen. Du kan også få din dataindtastningsformular returnere en DialogResult, der angiver, om brugeren har foretaget nogen ændring i modsætning til at annullere. Hvis det er tilfældet (siger DialogResult.OK blev returneret af dataindtastningsformularen, kan du køre din DGV-opdateringskode. [6]


I den anden tilgang, du har din dataindtastningsformular, fortæller brugerne, at dataene er blevet opdateret.

Andre referencer 1


med den antagelse, at kontrollen er bundet til en database
dette kan hjælpe,


Fra DataSet Designer:



  1. Højreklik på TableAdapter, og vælg 'Configure ...'

  2. tryk på næste, sørg for at 'Fyld en datatabel' er markeret

  3. tryk på Næste/Afslut.



i din kode tilføj:


myDataSet.AcceptChanges();
myBindingSource.EndEdit();
myTableAdapter.Fill(myDataSet.Table1);


Den bundne kontrol opdateres automatisk.


De første 2 udsagn kan være overflødige, men det virker for mig.
:)