cómo vincular datatable a datagridview en c #

Necesito vincular mi DataTable a mi DataGridView . hago esto:

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; 

Pero todo lo que tengo es que DataTable AGREGA NUEVAS columnas a mi DataGridView . No necesito esto, solo necesito escribir debajo de las columnas existentes. por favor, ayúdenme, muchachos!

Prueba esto:

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

Si no desea borrar todas las columnas existentes, debe establecer DataPropertyName para cada columna existente como esta:

 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; } 

Aun mejor:

 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(); 

Le está diciendo al origen enlazable que está vinculado al DataTable, a su vez debe decirle a su DataGridView que no genere columnas automáticamente, por lo que solo extraerá los datos de las columnas que ingresó manualmente en el control. .. por último actualice el control para actualizar el enlace de datos.

En DataGridView, establezca DataPropertyName de las columnas en los nombres de columna de su DataTable.

// Primero construí mi datatable y la llené, columnas, filas y todo. // Luego, una vez que la tabla de datos es funcional, haga lo siguiente para enlazarla a la DGV. NOTA: la propiedad AutoGenerateColumns de la DGV debe ser “verdadera” para este ejemplo, o la “asignación” de nombres de columna de datatable a dgv no funcionará. También “agregué” mi datatable a un conjunto de datos previamente, pero no creo que sea necesario.

  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(); 
 foreach (DictionaryEntry entry in Hashtable) { datagridviewTZ.Rows.Add(entry.Key.ToString(), entry.Value.ToString()); } 
 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; }