Avatar billede krestionsen Nybegynder
08. august 2004 - 19:15 Der er 15 kommentarer og
1 løsning

Datagrid opdatering af delete funktion

Jeg har en asp.net side, hvor der en datagrid og en kalender. Når man trykker på en dato på kalenderen, bliver starttiderne for den dag vist i datagrid'en, sammen med slet. Problemet er, at når jeg sletter en række, så bliver den godt nok slettet, men datagriden opdatere sig ikke, men forsvinder helt og så er man nød til, at vælge en anden dato og så vælge den samme dato igen, for at få vist starttiderne for den dag, hvor den så er slettet, men det var meningen, at når man havde trykket på slet knappen, så skulle datagriden blive opdateret med det samme?

public void Datagrid1_Delete(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
    int MoedeID = (int) DataGrid1.DataKeys[(int)e.Item.ItemIndex];
    int moedeid;

    if(e.CommandName == "Delete")
    {

        DataGrid1.SelectedIndex = e.Item.ItemIndex;
        moedeid = MoedeID;

        sletPartmoede(moedeid);
        sletEksternmoede(moedeid);
        sletMedarbejdermoede(moedeid);
        sletMoede(moedeid);

        }
}

// Er den der opdatere datagriden.

void Calendar1_SelectionChanged(object sender, EventArgs e)
    {
        dato = Calendar1.SelectedDate.ToShortDateString();
        DataGrid2.DataSource = testDato(dato);
        DataGrid2.DataBind();
    }
Avatar billede krestionsen Nybegynder
08. august 2004 - 19:26 #1
Der står både datagrid 1 og 2, men der skal stå datagrid2 over det hele:)
Avatar billede snepnet Nybegynder
08. august 2004 - 20:51 #2
Hvis du i en handler ændrer datagrundlaget for en databunden kontrol bliver du nødt til at databinde igen.
du skal nok sørge for at få dit databindingskald ud af Selection_Change-handleren, og lægge det i en seperat funktion du så både kan kalde som det sidste i delete-handleren, og hvor der ellers skulle være behov for det.
mvh
Avatar billede krestionsen Nybegynder
09. august 2004 - 08:20 #3
Har du et eksempel på, hvordan det kan laves?
Avatar billede snepnet Nybegynder
09. august 2004 - 08:59 #4
Det var bare sådan her jeg mente :

public void Datagrid1_Delete(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
    int MoedeID = (int) DataGrid1.DataKeys[(int)e.Item.ItemIndex];
    int moedeid;

    if(e.CommandName == "Delete")
    {
        DataGrid1.SelectedIndex = e.Item.ItemIndex;
        moedeid = MoedeID;

        sletPartmoede(moedeid);
        sletEksternmoede(moedeid);
        sletMedarbejdermoede(moedeid);
        sletMoede(moedeid);

        BindGrid();
    }
}

void Calendar1_SelectionChanged(object sender, EventArgs e)
{
        dato = Calendar1.SelectedDate.ToShortDateString();
        BindGrid(); // hvis det også er nødvendigt her
}

private void BindGrid()
{
        DataGrid2.DataSource = testDato(dato);
        DataGrid2.DataBind(); 
}
Avatar billede krestionsen Nybegynder
09. august 2004 - 09:52 #5
Det virker stadig ikke, der er stadig det samme problem med, at når jeg sletter en starttid, så bliver datagriden hel blank, selv om der fler starttider på den dag, så bliver jeg nød til, at gå over på en anden dato i kalenderen og så over på den og bagefter over på den dato, hvor jeg slettede noget fra, før den viser startiderne igen, hvor den er slettet.
Avatar billede snepnet Nybegynder
09. august 2004 - 09:58 #6
Det var nu heller ikke men som at du skulle tage koden direkte, og slå det ind... Det var mere princippet jeg bare ville illustrere.
Jeg vil gerne kigge lidt mere på det, men så skal du nok smide lidt mere af din kode ud...
Avatar billede krestionsen Nybegynder
09. august 2004 - 10:26 #7
Jeg har ikke, så meget mere kode end det, som jeg allerede har smidt her ind, men hvis der er noget specifikt kode du vil se, så må du lige sige det.

System.Data.DataSet hentStarttider(string dato)
    {
        string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4; Data Source=D:\\Fam\\db1.mdb";
        System.Data.IDbConnection dbConnection = new System.Data.OleDb.OleDbConnection(connectionString);

        string queryString = "SELECT [Moede].[StartTid], [Moede].[MoedeID] FROM [Moede] WHERE ([Moede].[Dato] = @Dato)";
        System.Data.IDbCommand dbCommand = new System.Data.OleDb.OleDbCommand();
        dbCommand.CommandText = queryString;
        dbCommand.Connection = dbConnection;

        System.Data.IDataParameter dbParam_dato = new System.Data.OleDb.OleDbParameter();
        dbParam_dato.ParameterName = "@Dato";
        dbParam_dato.Value = dato;
        dbParam_dato.DbType = System.Data.DbType.String;
        dbCommand.Parameters.Add(dbParam_dato);

        System.Data.IDbDataAdapter dataAdapter = new System.Data.OleDb.OleDbDataAdapter();
        dataAdapter.SelectCommand = dbCommand;
        System.Data.DataSet dataSet = new System.Data.DataSet();
        dataAdapter.Fill(dataSet);

        return dataSet;
    }
Avatar billede krestionsen Nybegynder
09. august 2004 - 10:28 #8
Den metode jeg har tilføjej, har jeg kaldt hentStarttider, men det er den der hedder testDato() oppe i spørgsmålet, håb
Avatar billede pusler Nybegynder
09. august 2004 - 12:18 #9
Skal du ikke blot databinde igen i din public void Datagrid1_Delete ?
Avatar billede krestionsen Nybegynder
09. august 2004 - 14:05 #10
Det har jeg allerede gjort med det funktion jeg fik af snepnet BindGrid();, eller det var ikke det du mente?
Avatar billede krestionsen Nybegynder
09. august 2004 - 23:39 #11
Er der ikke en der har et eksempel med datgrid og en calendar, med en delete funktion, så jeg kan se, hvad det er jeg har gjort forkert?
Avatar billede snepnet Nybegynder
09. august 2004 - 23:55 #12
Hvor sætter du sagerne ind fra... er det noget du har angivet i aspx-filen, eller sætter du det hele ind fra din code-behind ?
Hvis det sidste er tilfældet vil jeg gerne se den funktion du gør det i.
Avatar billede krestionsen Nybegynder
10. august 2004 - 08:17 #13
Det er noget, jeg har angivet i aspx filen.
Avatar billede snepnet Nybegynder
10. august 2004 - 08:47 #14
Det jeg sendte her http://www.eksperten.dk/spm/527383#rid4833887
Det skriver du at du ikke kan få til at virke.... men det er vel sansynligt at du ved en uheldig/manglende angivelse af dato - ikke får noget op fra basen, og derfor heller ikke får vist noget.
Kan du ikke checke det... Altså hvad datoen er - efter der trykkes delete, med efterfølgende kald til din databindingsfunktion.
Avatar billede krestionsen Nybegynder
10. august 2004 - 14:13 #15
Det var som du sagde, det med den dato, den skulle bare ind i bindgrid metoden, smid et svar.
Jeg tænkte på, da du altid kan svare på alle mine spørgsmål, kunne jeg så ikke få dig til at se på dette spørgsmål, som jeg aldrig har fået svar på eller jeg har fået svar på det, men ved ikke rigtigt, hvor jeg skal sætte det ind og ham som er kommet med løsningen, kan jeg ikke få fat i?

http://www.eksperten.dk/spm/511721
Avatar billede snepnet Nybegynder
10. august 2004 - 14:16 #16
Du får et svar her :o) - og jeg kigger lige på det andet spørgsmål der.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester