Is there a elegant way, to bind predefined dataGridView columns with results from a SQL statement?
Example:
dataGridView1.Columns.Add("EID", "ID");
dataGridView1.Columns.Add("FName", "FirstName");
Some SQL like
SELECT t.FirstName AS FName, t.EmpID AS EID
FROM table t ...
and then I call
dataGridView1.DataSource = someDataSet.Tables[0].DefaultView;
The last call add columns to my datagrid but I just want to bind it by column name not to add new columns.
The example will give a result like this:
Table columns: ID, FirstName, FName, EID (ID and FirstName holds empty cells)
How to get this:
Table columns: ID, FirstName or FirstName, ID
Best regards!
Use dataGridView1.Columns["FName"].DataPropertyName = "FName"
where FName is column in your data table.
Aside from setting AutoGenerateColumns
to false, you also need to set DataPropertyName
for each column in the DataGridView
to the corresponding field in the data source. You can set this in the designer or in code before setting the DataSource
property.
I think the DataGridView has an AutoGenerateColumns
property, doesn't it?
dataGridView1.AutoGenerateColumns = True;
From the MSDN docs:
public bool AutoGenerateColumns { set; get; } Member of System.Windows.Forms.DataGridView
Summary: Gets or sets a value indicating whether columns are created automatically when the System.Windows.Forms.DataGridView.DataSource or System.Windows.Forms.DataGridView.DataMember properties are set.
Returns: true if the columns should be created automatically; otherwise, false. The default is true.
The property isn't on the Properties window though, you have to set it via code as in my example.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With