![]() |
Datagrid
Hallo
wie kann ich den Inhalt meines Datagrid löschen bzw clear?
Delphi-Quellcode:
ich habe den Code in einer Mdi Form
//Style DataGrid übergeben
DataGrid1.TableStyles.Clear; DataGrid1.TableStyles.Add(style1); //Daten übergeben DataGrid1.DataSource := g_c_medien_dt; immer wenn ich die Form aufrufe hängt er die daten nur hinten dran DataGrid1.DataSource := NIL; DataGrid1.DataBindings.Clear; bringt keinen Erfolgt Hat jemand weisheit? |
Re: Datagrid
Du mußt nicht das DataGrid leeren sondern die DataSource (g_c_medien_dt), bzw. einzelne Tabellen da drin! In etwa so:
Delphi-Quellcode:
if ((dataset1.Tables <> NIL) AND
(dataset1.Tables.Contains('tabelle'))) THEN dataset1.Tables['tabelle'].Clear(); |
Re: Datagrid
Hallo
ich dachte ich könnte den Inhalt im Datagrid löschen ohne mein Dataset oder Datatable anzufassen weil sonst mus ich den Inhalt wieder neu reinladen ich lade aber nur einmal - Beim OnLoad warum löscht er denn nicht den Inhalt wenn DataGrid.DataSource NIL zu weise? |
Re: Datagrid
Das ist ähnlich wie beim DBGrid, es wird der Inhalt das Datasets angezeigt!
|
Re: Datagrid
das hilft aber nicht weiter
wenn ich der datasource NIL zuweise sollte das DataGrid nix anzeigen und nicht bei neuen zuweisen der datasource alle daten nur dranhängen. |
Re: Datagrid
Zitat:
Du hast sicher einfach nur Werte an deine Daten angehängt, das Grid stellt die Daten in der Source dar, nicht mehr und nicht weniger. ;) |
Re: Datagrid
ich glaube nicht das ich werte dranhänge
hier mal ein bisschen Code Ich habe eine Parent Form hier wird bei OnLoad das ausgeführt
Delphi-Quellcode:
in der Mdi Form
Procedure Medien_DA_Erzeugen_DBC();
var sel_s : String; upd_cmd : OleDbCommand; upd_par : OleDbParameter; ins_cmd : OleDbCommand; ins_par : OleDbParameter; del_cmd : OleDbCommand; del_par : OleDbParameter; begin //Select //Select String sel_s := 'SELECT * FROM GFC_Medien'; //Daten aus der DB holen g_c_medien_da := OleDbDataAdapter.Create(sel_s, gf_conn); //Update //Update Command upd_cmd := OleDbCommand.Create(); upd_cmd.CommandType := CommandType.StoredProcedure; upd_cmd.CommandText := 'GFC_M_UPDATE'; upd_cmd.Connection := gf_conn; upd_cmd.Parameters.Clear; upd_cmd.Parameters.Add('@GFC_M_NAME', OleDbType.VarWChar, 100, 'GFC_M_NAME'); upd_cmd.Parameters.Add('@GFC_M_AKTIV', OleDbType.Boolean, 1, 'GFC_M_AKTIV'); upd_cmd.Parameters.Add('@GFC_M_OUT', OleDbType.Boolean, 1, 'GFC_M_OUT'); upd_cmd.Parameters.Add('@GFC_M_USER_NAME', OleDbType.VarWChar, 50, 'GFC_M_USER_NAME'); upd_cmd.Parameters.Add('@GFC_M_USER_TXT', OleDbType.LongVarWChar, 16, 'GFC_M_USER_TXT'); upd_cmd.Parameters.Add('@GFC_M_USER_DATE', OleDbType.DBTimeStamp, 4, 'GFC_M_USER_DATE'); upd_par := upd_cmd.Parameters.Add('@ID', OleDbType.Integer); upd_par.SourceColumn := 'ID'; upd_par.SourceVersion := DataRowVersion.Current; //Insert //Insert Command ins_cmd := OleDbCommand.Create(); ins_cmd.CommandType := CommandType.StoredProcedure; ins_cmd.CommandText := 'GFC_M_INSERT'; ins_cmd.Connection := gf_conn; ins_cmd.Parameters.Clear; ins_cmd.Parameters.Add('@GFC_M_NAME', OleDbType.VarWChar, 100, 'GFC_M_NAME'); ins_cmd.Parameters.Add('@GFC_M_AKTIV', OleDbType.Boolean, 1, 'GFC_M_AKTIV'); ins_cmd.Parameters.Add('@GFC_M_OUT', OleDbType.Boolean, 1, 'GFC_M_OUT'); ins_cmd.Parameters.Add('@GFC_M_USER_NAME', OleDbType.VarWChar, 50, 'GFC_M_USER_NAME'); ins_cmd.Parameters.Add('@GFC_M_USER_TXT', OleDbType.LongVarWChar, 16, 'GFC_M_USER_TXT'); ins_cmd.Parameters.Add('@GFC_M_USER_DATE', OleDbType.DBTimeStamp, 4, 'GFC_M_USER_DATE'); ins_par := ins_cmd.Parameters.Add('@Identity', OleDbType.Integer, 4, 'ID'); ins_par.Direction := System.Data.ParameterDirection.Output; ins_par.SourceColumn := 'ID'; ins_par.SourceVersion := DataRowVersion.Current; //Delete //Delete Command del_cmd := OleDbCommand.Create(); del_cmd.CommandType := CommandType.StoredProcedure; del_cmd.CommandText := 'GFC_M_DELETE'; del_cmd.Connection := gf_conn; del_cmd.Parameters.Clear; del_par := del_cmd.Parameters.Add('@ID', OleDbType.Integer, 4, 'ID'); del_par.SourceColumn := 'ID'; del_par.SourceVersion := DataRowVersion.Original; //Commands übergeben g_c_medien_da.UpdateCommand := upd_cmd; g_c_medien_da.InsertCommand := ins_cmd; g_c_medien_da.DeleteCommand := del_cmd; //Daten ins Dataset gf_conn.Open; g_c_medien_da.Fill(g_c_dataset_ds, 'GFC_Medien'); gf_conn.Close; //DataTable laden g_c_medien_dt := g_c_dataset_ds.Tables['GFC_Medien']; end; als erstes alle Mdi Form close dann auch hier im OnLoad
Delphi-Quellcode:
Procedure DataGrid1_Binden_C1();
var style1 : DataGridTableStyle; textboxcol1 : DataGridTextBoxColumn; textboxcol2 : DataGridTextBoxColumn; textboxcol3 : DataGridTextBoxColumn; textboxcol4 : DataGridTextBoxColumn; begin //DataGrid löschen C1.DataGrid1.DataSource := NIL; C1.DataGrid1.DataBindings.Clear; //Style1 erzeugen style1 := DataGridTableStyle.Create; style1.MappingName := 'GFC_Medien'; style1.RowHeaderWidth := 10; //Style1 Farbe style1.AlternatingBackColor := System.Drawing.Color.LightSteelBlue; //TextCol1 GFC_M_ID textboxcol1 := DataGridTextBoxColumn.Create; textboxcol1.MappingName := 'GFC_M_ID'; textboxcol1.HeaderText := 'Nr.'; textboxcol1.Width := 50; //TextCol2 GFC_M_NAME textboxcol2 := DataGridTextBoxColumn.Create; textboxcol2.MappingName := 'GFC_M_NAME'; textboxcol2.HeaderText := 'Name'; textboxcol2.Width := 300; //TextCol3 GFC_M_USER_NAME textboxcol3 := DataGridTextBoxColumn.Create; textboxcol3.MappingName := 'GFC_M_USER_NAME'; textboxcol3.HeaderText := 'geändert von'; textboxcol3.Width := 200; //TextCol4 GFC_M_USER_DATE textboxcol4 := DataGridTextBoxColumn.Create; textboxcol4.MappingName := 'GFC_M_USER_DATE'; textboxcol4.HeaderText := 'geändert am'; textboxcol4.Width := 120; //Zum Style hinzufügen style1.GridColumnStyles.Clear; style1.GridColumnStyles.Add(textboxcol1); style1.GridColumnStyles.Add(textboxcol2); style1.GridColumnStyles.Add(textboxcol3); style1.GridColumnStyles.Add(textboxcol4); //Style DataGrid übergeben C1.DataGrid1.TableStyles.Clear; C1.DataGrid1.TableStyles.Add(style1); //Daten übergeben C1.DataGrid1.DataSource := g_c_medien_dt; <--------------------------- wenn ich jetzt das erstmal die Mdi öffne, ist alles Ok, es stehen im Datagrid 10 datensätze schliesse ich sie wieder und öffne sie neu, stehen im DataGrid jetzt 20 datensätze beim nächsten öfnen 30 usw. er hängt immer wieder nur die datensätze an das Grid an |
Re: Datagrid
Asche auf mein Haupt
Natürlich hast du recht gehabt war ein bischen eingefahren in der Function um alle Mdi zu schliesen war ein Aufruf die Daten neu einzulesen damit hat er sie immer neu ins dataset drangehängt Vielen Dank für den Tritt in den Hintern :mrgreen: manchmal hilft es Homer |
Re: Datagrid
Warum benutzt du überhaupt .Net? :gruebel:
Dein Code sieht aus, als ob du dbExpress in Win32 benutzt, außerdem hast du lose Prozeduren und Globale Variablen. Das da ist IMHO kein .Net Code, und wenn man so programmiert brngt einem .Net keinerlei Vorteile gegenüber der Win32 VCL, die ja mehr auf solche Quick'nDirty Sachen ausgelegt ist. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz