Я создаю приложение, которое использует DataGridView для создания и изменения локального списка, который позже будет импортирован в систему. Он должен быть доступен для редактирования пользователем (щелчок и запись в DGV), и он также должен поддерживать импорт из csv, что означает, что мне нужна двухсторонняя синхронизация между DGV и datasource.DataGridView отсутствует новая строка с пустым источником данных
Я установил DataSource в DGV, чтобы в BindingList<Client>
, как это:
//In my seperate Client class-file
public class Client
{
private string _name;
private string _mac;
private string _status;
public Client(string pcnavn, string MAC)
{
_pcnavn = pcnavn;
_mac = mac;
}
public string Name
{
get
{
return _name;
}
set
{
_name = value;
}
}
public string MAC
{
get
{
return _mac;
}
set
{
_mac = value;
}
}
public string Status
{
get
{
return _status;
}
set
{
_status = value;
}
}
}
//In my mainform class
public BindingList<Client> clientDataSource = new BindingList<Client>();
public MainForm()
{
InitializeComponent();
//clienDataGridView.AutoGenerateColumns = false; //The duplicate columns where fixed by setting DataPropertyName for all columns.
clientDataGridView.DataSource = clientDataSource;
}
При таком подходе DGV генерируется, но он пуст (только заголовки), так что пользователь не может добавить с помощью DGV. Без DataSource он отображает пустую строку, такую как редактор SQL, поэтому я могу создавать строки вручную в DGV. Как я могу показать «новый элемент», когда он связан с пустым источником данных? Все примеры, которые я нашел, используют непустые источники данных.
AllowUserToAddRows
и AllowUserToDeleteRows
установлены на true
.
Эта фотография показывает мою проблему. «Первая строка» отсутствует при использовании источника данных. Невозможно добавить данные, набрав DGV.
Рад, что вы нашли решение. – Kurubaran
Спасибо, я установил свойство AllowNew объекта bindingsource в конструкторе, но все еще не работал. До тех пор, пока я не использовал свойство Datasource для bindingSource, а не тот, который из самого datagridview привязал данные. Это сработало. – Peter