tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
1121
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    real-insanity real-insanity ist offline Mitglied Gold
    Registriert seit
    Mar 2007
    Ort
    Viersen, Germany
    Beiträge
    102
    Hallo zusammen,

    mal wieder ein problem woran ich gerade kläglich scheitere .
    Ich baue aktuell einen, zugegebenermaßen rudimentären, SQLite TableEditor womit ich elegant die Datensätze pflegen kann ohne ein Drittherstellertool zu benutzen.

    Die erste Tabelle (mit Inhalten) wird mir auch richtig angezeigt.
    Klicke ich nun auf "go" (sollte die Daten neu laden und in das DataGrid packen), werden die Daten hinzugefügt. Sprich, die alten ColumnHeader sind noch da und es scheint mir, als würde zur Laufzeit (bzw. bei der Aktualisierung durch den Button "go") die Daten nur angehangen werden.

    Das ist in sofern problematisch, da ich auch das Hinzufügen/Löschen/Ändern der Datensätze über einen DataAdapter zulasse.

    Hier der Code meiner Form:
    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    
    using System;
    using System.Windows.Forms;
    using SoundConductor.Common.Helper;
    using System.Data;
    using System.Data.SQLite ;
     
    namespace SoundConductor.forms
    {
        public partial class frmTableEditor : Form
        {
            DataHelper db = new DataHelper();
            SQLiteDataAdapter daTable = new SQLiteDataAdapter();
            DataSet dsTables = new DataSet();
            DataSet dsTableContent = new DataSet();
     
            private string tableName = "";
            private bool showID = false;
            private bool showTables = false;
     
            public bool ShowTables
            {
                get { return showTables; }
                set { showTables = value; }
            }
     
            public bool ShowID
            {
                get { return showID; }
                set { showID = value; }
            }
     
            public string TableName
            {
                set { tableName = value; }
            }
     
            public frmTableEditor()
            {
                InitializeComponent();
            }
     
            private void frmTableEditor_Load(object sender, EventArgs e)
            {
                try
                {
                    if (showTables == false)
                    {
                        dgvTableContent.Dock = DockStyle.Fill;
                        this.Text = string.Format(this.Text, tableName);
     
                        daTable = db.GetTable(this.tableName);
                        daTable.Fill(dsTables);
     
                        //set the DataGridView DataSource
                        dgvTableContent.DataSource = dsTables.Tables[0];
                        dgvTableContent.Columns["ID"].Visible = this.showID;
                    }
                    else
                    {
                        dgvTableContent.Dock = DockStyle.None;
                        DataSet Tables = db.GetTables();
                        if (Tables.Tables.Count > 0)
                        {
                            cboTables.DataSource = Tables.Tables[0];
                            cboTables.DisplayMember = "name";
                            cboTables.Refresh();
                        }
                    }
     
                    lblTables.Visible = showTables;
                    cboTables.Visible = showTables;
                    btnGo.Visible = showTables;
                    
                    
                }
                catch (Exception ex)
                {
                    DebugHelper.WriteToLog(ex.Message);
                }
            }
     
            private void btnSaveData_Click(object sender, EventArgs e)
            {
     
            }
          
            private void dgvTableContent_CellEndEdit(object sender, DataGridViewCellEventArgs e)
            {
                try
                {
                    daTable.Update(dsTableContent);
                    dgvTableContent.EndEdit();
                }
                catch (Exception ex)
                {
                    DebugHelper.WriteToLog(ex.Message);
                }
            }
     
            private void btnDeleteRow_Click(object sender, EventArgs e)
            {
                try
                {
                    dgvTableContent.Rows.RemoveAt(dgvTableContent.SelectedRows[0].Index);
                    daTable.Update(dsTableContent);
                }
                catch (Exception ex)
                {
                    DebugHelper.WriteToLog(ex.Message.ToString());
                }
            }
     
            private void btnGo_Click(object sender, EventArgs e)
            {
                
                try
                {
                    this.Text = string.Format(this.Text, cboTables.Text);
     
                    dsTableContent.Clear();
                    daTable = db.GetTable(cboTables.Text);
                    daTable.Fill(dsTableContent);
     
                    dgvTableContent.DataSource = dsTableContent.Tables[0];
                    dgvTableContent.Columns["ID"].Visible = this.showID;
                    dgvTableContent.Refresh();
                    dgvTableContent.Update();
     
                }
                catch (Exception ex)
                {
                    DebugHelper.WriteToLog(ex.Message.ToString());
                }
            }
        }
    }

    Die Methode "GetTable" sieht so aus:
    Code csharp:
    1
    2
    3
    4
    
    public SQLiteDataAdapter GetTable(string _tablename, bool AllFields = true)
            {
                return DataBaseHelper.GetDataAdapter(string.Format("SELECT * FROM {0} ORDER BY ID", _tablename));
            }

    Ich finde zum Verrecken keinen Fehler in meiner Überlegung.
    Hatte schon versucht das Dataset über Clear() zu Leeren, auch die Rows und Columns habe ich mit Clear(), vergeblich, versucht zu löschen.

    Habt Ihr eine Idee was ich noch machen kann?
    Edit:
    Die Tabellen hole ich mir über deine DropDown, das mit Daten der Tabellen gefüllt wird und dann entsprechend eine Tabelle zur Anzeige auswählen kann.
     

  2. #2
    Mirc Mirc ist offline Rookie
    Registriert seit
    Aug 2011
    Beiträge
    8
    Ich bin mir nicht sicher da ich auch ein Anfänger in ASP.NET bin,
    aber könnte es sein das eine dgvTableContent.DataBind() fehlt?
     

  3. #3
    real-insanity real-insanity ist offline Mitglied Gold
    Registriert seit
    Mar 2007
    Ort
    Viersen, Germany
    Beiträge
    102
    Also in WinForms scheints das nicht zu geben. Weil der binded die Daten ja schon dran, sobald man die Datasource zuweist.
     

Ähnliche Themen

  1. Antworten: 13
    Letzter Beitrag: 25.02.11, 19:04
  2. Antworten: 5
    Letzter Beitrag: 10.08.07, 15:59
  3. JTable zur Laufzeit aktualisieren
    Von cHucKy51 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 6
    Letzter Beitrag: 03.08.07, 15:59
  4. Datagrid aktualisieren & bearbeiten
    Von royalboy im Forum .NET Archiv
    Antworten: 3
    Letzter Beitrag: 20.05.04, 21:01
  5. Datagrid aktualisieren
    Von Javaprogrammer im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 12.04.04, 21:58