добавить строку в динамическое представление данных - PullRequest
0 голосов
/ 16 июня 2011

У меня есть форма Windows, где я пытаюсь добавить путь к файлу, используя папкуbrowserDialog

У меня есть этот код при загрузке формы

public FileMgmt()
    {
        InitializeComponent();

        //
        // Here we create a DataTable with four columns.
        //
        DataTable table = new DataTable();
        table.Columns.Add("Check", typeof(bool));
        table.Columns.Add("Path", typeof(string));
        table.Columns.Add("Date", typeof(DateTime));


        table.Rows.Add(false, "", DateTime.Now);
        dataGridView2.DataSource = table;
    }

это код, когда я нажимаю кнопку для поиска папок и добавления пути к указанному выше виду сетки, в котором уже есть строка выше

private void AddPubPath_Button_Click(object sender, EventArgs e)
        {
            folderBrowserDialog1.ShowDialog();
            dataGridView2.Rows.Add(false, folderBrowserDialog1.SelectedPath, DateTime.Now);
        }

но я получаю следующую ошибку ..

Строки не могут быть программно добавлены в коллекцию строк DataGridView, когда элемент управления привязан к данным.

пожалуйста, любые предложения

1 Ответ

2 голосов
/ 16 июня 2011

Поскольку ваш DataGridView привязан к DataTable, вам необходимо обновить DGV через DT.Это то, о чем говорит ошибка.

Обновите код щелчка кнопки следующим образом:

private void button1_Click(object sender, EventArgs e) {
    if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) {
        var table = (DataTable)dataGridView2.DataSource;
        var newRow = table.NewRow();
        newRow["Check"] = false;
        newRow["Path"] = folderBrowserDialog1.SelectedPath;
        newRow["Date"] = DateTime.Now;
        table.Rows.Add(newRow);
    }
}

Этот код получает таблицу данных, к которой привязан DGV, создает новую пустую строку длятаблицу, заполняет эту новую строку данными, а затем, наконец, добавляет строку в DataTable.

Я также добавил код, который гарантирует, что пользователь фактически выбрал папку с вашим FolderBrowserDialog, прежде чем пытаться добавить строку.

Отредактируйте в ответ на ваш вопрос о том, чтобы сделать редактируемым только столбец Проверка

// Make all the columns you don't want editable read only.
table.Columns["Path"].ReadOnly = true;
table.Columns["Date"].ReadOnly = true;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...