08. august 2004 - 19:15Der 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;
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
public void Datagrid1_Delete(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) { int MoedeID = (int) DataGrid1.DataKeys[(int)e.Item.ItemIndex]; int moedeid;
void Calendar1_SelectionChanged(object sender, EventArgs e) { dato = Calendar1.SelectedDate.ToShortDateString(); BindGrid(); // hvis det også er nødvendigt her }
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.
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...
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;
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.
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.
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?
Du får et svar her :o) - og jeg kigger lige på det andet spørgsmål der.
Synes godt om
Ny brugerNybegynder
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.