2009-11-16 14 views
7

Esiste un modo elegante per associare le colonne DataGridView predefinite ai risultati di un'istruzione SQL?Come associare le colonne predefinite di dataGridView con colonne dall'istruzione sql (senza aggiungere nuove colonne)?

Esempio:

dataGridView1.Columns.Add("EID", "ID"); 
dataGridView1.Columns.Add("FName", "FirstName"); 

Alcuni SQL come

SELECT t.FirstName AS FName, t.EmpID AS EID 
FROM table t ... 

e poi chiamo

dataGridView1.DataSource = someDataSet.Tables[0].DefaultView; 

L'ultima chiamata aggiungere colonne al mio datagrid ma voglio solo di vincolarla nome della colonna per non aggiungere nuove colonne.

L'esempio darà un risultato come questo:

colonne della tabella: ID, Nome, FName, EID (ID e FirstName tiene celle vuote)

Come ottenere questo:

Table columns: ID, FirstName or FirstName, ID 

Distinti saluti!

+1

È questo ASP.NET o WinForms? –

risposta

1

Penso che DataGridView abbia una proprietà AutoGenerateColumns, non è vero?

dataGridView1.AutoGenerateColumns = True; 

Dalla documentazione MSDN:

AutoGenerateColumns public bool {set; get; } Membro del System.Windows.Forms.DataGridView

Sommario: Ottiene o imposta un valore che indica se colonne vengono create automaticamente quando i System.Windows.Forms.DataGridView.DataSource o System.Windows.Forms .DataGridView.DataMember proprietà sono impostate.

Restituisce: true se le colonne devono essere create automaticamente; altrimenti, false. Il valore predefinito è true.

La proprietà non si trova nella finestra Proprietà, tuttavia, è necessario impostarla tramite codice come nel mio esempio.

+0

Neil, provato dataGridView1.AutoGenerateColumns = True; e = falso, ma lo stesso risultato. Non funziona – Jooj

+0

È questo ASP.NET o WinForms? –

+0

Sto usando WinForms. – Jooj

0

Come aggiungere colonne al tag Columns della griglia in modo simile?

<Columns> 
<asp:BoundField DataField="EID" HeaderText="ID" /> 
<asp:BoundField DataField="FName" HeaderText="First name" /> 
... 
+0

Grazie, ma sto usando winforms! – Jooj

+0

ah, scusa, mio ​​errore. – adrianos

15

Oltre a impostare AutoGenerateColumns false, è anche necessario impostare DataPropertyName per ogni colonna DataGridView al campo corrispondente nell'origine dati. È possibile impostarlo nella finestra di progettazione o nel codice prima di impostare la proprietà DataSource.

11

Utilizzare dataGridView1.Columns["FName"].DataPropertyName = "FName" dove FName è la colonna nella tabella dei dati.

+0

Questo risolve il problema, la tua risposta dovrebbe essere contrassegnata come corretta. – Lucas

Problemi correlati