Как связать предопределенные столбцы dataGridView со столбцами из оператора SQL (без добавления новых столбцов)? - PullRequest
11 голосов
/ 16 ноября 2009

Существует ли элегантный способ связать предварительно определенные столбцы dataGridView с результатами из оператора SQL?

Пример:

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

Некоторые SQL, такие как

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

и тогда я звоню

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

Последний вызов добавляет столбцы к моей сетке данных, но я просто хочу связать его по имени столбца, чтобы не добавлять новые столбцы.

Пример даст результат, подобный этому:

Столбцы таблицы: ID, FirstName, FName, EID (ID и FirstName содержат пустые ячейки)

Как это получить:

Table columns: ID, FirstName or FirstName, ID

С наилучшими пожеланиями!

Ответы [ 5 ]

16 голосов
/ 26 января 2010

Помимо установки AutoGenerateColumns в значение false, вам также необходимо установить DataPropertyName для каждого столбца в DataGridView в соответствующее поле в источнике данных.Вы можете установить это в конструкторе или в коде перед установкой свойства DataSource.

13 голосов
/ 02 марта 2011

Используйте dataGridView1.Columns["FName"].DataPropertyName = "FName", где FName - это столбец в вашей таблице данных.

2 голосов
/ 16 ноября 2009

Я думаю, что DataGridView имеет свойство AutoGenerateColumns, не так ли?

dataGridView1.AutoGenerateColumns = True;

Из документов MSDN:

public bool AutoGenerateColumns {set; получить; } Участник System.Windows.Forms.DataGridView

Сводка: получает или задает значение указывает, созданы ли столбцы автоматически, когда System.Windows.Forms.DataGridView.DataSource или же System.Windows.Forms.DataGridView.DataMember свойства установлены.

Возвращает: true, если столбцы должны быть создается автоматически; иначе, ложный. По умолчанию установлено значение true.

Это свойство отсутствует в окне «Свойства», его необходимо установить с помощью кода, как в моем примере.

1 голос
/ 07 октября 2018

Если вы используете WinForm, важной частью является установка свойства DataPropertyName в соответствии с именем столбца DataTable. Вы можете сделать это в конструкторе или коде следующим образом:

Me.AccountDataGridView.Columns("Account").DataPropertyName = "Account"

Конечно, установив это:

Me.AccountDataGridView.AutoGenerateColumns = False
0 голосов
/ 16 ноября 2009

Как насчет добавления столбцов в тэг Columns вашего вида сетки?

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