wake-up-neo.net

wie man datatable in c # an datagridview bindet

Ich muss mein DataTable an mein DataGridView..__ binden.

        DTable = new DataTable();
        SBind = new BindingSource();
        //ServersTable - DataGridView
        for (int i = 0; i < ServersTable.ColumnCount; ++i)
        {
            DTable.Columns.Add(new DataColumn(ServersTable.Columns[i].Name));
        }

        for (int i = 0; i < Apps.Count; ++i)
        {
            DataRow r = DTable.NewRow();
            r.BeginEdit();
            foreach (DataColumn c in DTable.Columns)
            {
                r[c.ColumnName] = //writing values
            }
            r.EndEdit();
            DTable.Rows.Add(r);
        }
        SBind.DataSource = DTable;
        ServersTable.DataSource = SBind;

Aber alles, was ich habe, ist DataTableADDS NEW zu meinen DataGridView..__-Spalten. Ich brauche das nicht, ich muss nur unter vorhandene Spalten schreiben. .bitte hilf mir, Jungs!

17
Greag.Deay

Versuche dies:

    ServersTable.Columns.Clear();
    ServersTable.DataSource = SBind;

Wenn Sie nicht alle vorhandenen Spalten löschen möchten, müssen Sie DataPropertyName für jede vorhandene Spalte wie folgt festlegen:

for (int i = 0; i < ServersTable.ColumnCount; ++i) {
  DTable.Columns.Add(new DataColumn(ServersTable.Columns[i].Name));
  ServersTable.Columns[i].DataPropertyName = ServersTable.Columns[i].Name;
}
19
King King

Noch besser: 

DataTable DTable = new DataTable();
BindingSource SBind = new BindingSource();
SBind.DataSource = DTable;
DataGridView ServersTable = new DataGridView();

ServersTable.AutoGenerateColumns = false;
ServersTable.DataSource = DTable;

ServersTable.DataSource = SBind;
ServersTable.Refresh();

Sie teilen der bindbaren Quelle mit, dass sie an die DataTable gebunden ist, und Sie müssen Ihrem DataGridView dann mitteilen, dass keine Spalten automatisch generiert werden. Es werden also nur die Daten für die manuell in das Steuerelement eingegebenen Spalten abgerufen. .. Aktualisieren Sie schließlich das Steuerelement, um die Datenbank zu aktualisieren. 

10
user817530

Legen Sie in der DataGridView den DataPropertyName der Spalten auf Ihre Spaltennamen Ihrer DataTable fest.

3
Marc K

// Ich habe zuerst meine Datentabelle erstellt und mit Spalten, Zeilen und allem gefüllt . // Wenn die Datentabelle funktionsfähig ist, führen Sie die folgenden Schritte aus, um sie an die DGV zu binden. HINWEIS: Die AutoGenerateColumns-Eigenschaft der DGV muss für dieses Beispiel "true" sein, oder das "Zuweisen" von Spaltennamen von datatable zu dgv funktioniert nicht. Ich habe meine Datentabelle zuvor auch zu einem Datensatz hinzugefügt, aber ich denke nicht, dass dies notwendig ist.

 BindingSource SBind = new BindingSource();
 SBind.DataSource = dtSourceData;

 ADGView1.AutoGenerateColumns = true;  //must be "true" here
 ADGView1.Columns.Clear();
 ADGView1.DataSource = SBind;

 //set DGV's column names and headings from the Datatable properties
 for (int i = 0; i < ADGView1.Columns.Count; i++)
 {
       ADGView1.Columns[i].DataPropertyName = dtSourceData.Columns[i].ColumnName;
       ADGView1.Columns[i].HeaderText = dtSourceData.Columns[i].Caption;
 }
 ADGView1.Enabled = true;
 ADGView1.Refresh();
2
Cwinds

zum Beispiel möchten wir ein DataTable 'Users' auf DataGridView setzen, indem Sie die folgenden 2 Schritte ausführen:

public DataTable  getAllUsers()
    {
        OracleConnection Connection = new OracleConnection(stringConnection);
        Connection.ConnectionString = stringConnection;
        Connection.Open();

        DataSet dataSet = new DataSet();

        OracleCommand cmd = new OracleCommand("semect * from Users");
        cmd.CommandType = CommandType.Text;
        cmd.Connection = Connection;

        using (OracleDataAdapter dataAdapter = new OracleDataAdapter())
        {
            dataAdapter.SelectCommand = cmd;
            dataAdapter.Fill(dataSet);
        }

        return dataSet.Tables[0];
    }

schritt 2: Setzen Sie das Ergebnis auf DataGridView: 

public void setTableToDgv(DataGridView DGV, DataTable table)
    {
        DGV.DataSource = table;
    }

am beispiel:

    setTableToDgv(dgv_client,getAllUsers());
0
foreach (DictionaryEntry entry in Hashtable)
{
    datagridviewTZ.Rows.Add(entry.Key.ToString(), entry.Value.ToString());
}
0
private void Form1_Load(object sender, EventArgs e)
    {
        DataTable StudentDataTable = new DataTable("Student");

        //perform this on the Load Event of the form
        private void AddColumns() 
        {
            StudentDataTable.Columns.Add("First_Int_Column", typeof(int));
            StudentDataTable.Columns.Add("Second_String_Column", typeof(String));

            this.dataGridViewDisplay.DataSource = StudentDataTable;
        }
    }

    //Save_Button_Event to save the form field to the table which is then bind to the TableGridView
    private void SaveForm()
        {
            StudentDataTable.Rows.Add(new object[] { textBoxFirst.Text, textBoxSecond.Text});

            dataGridViewDisplay.DataSource = StudentDataTable;
        }
0
Parag555