Как обновить сетку данных при событии щелчка?

#c# #.net #visual-studio-2008 #data-binding

#c# #.net #visual-studio-2008 #привязка данных

Вопрос:

У меня есть следующий код, который обновляет базу данных при нажатии кнопки, вызывая функцию additems.

 static DataTable additems(string itema, string itemb, string itemc, string itemd)
        {
            DataTable listitems = new DataTable();
            listitems.Columns.Add("itema");
            listitems.Columns.Add("itemb");
            listitems.Columns.Add("itemc");
            listitems.Columns.Add("itemd");

            // Add new items
            listitems.Rows.Add(itema, itemb, itemc, itemd);

            return listitems;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // add to data grid
            dataGridView1.DataSource = additems("New text", "Almonds", "Butter", "Salt");
        }
  

Я хотел, чтобы приведенный выше код создал новую таблицу данных. И это отлично работает для отдельных данных..
но для нескольких данных, как я могу достичь таких высот?

У меня есть новая переменная (не использующая какую-либо базу данных). Всякий раз, когда нажимается button1, эту переменную необходимо загружать в таблицу данных, чтобы ее можно было мгновенно добавить в datagridview1.

Мне нужны некоторые концепции…

Ответ №1:

ну, вы могли бы изменить метод sig, чтобы принимать новый параметр для datatable …

если это значение равно null, создайте новую таблицу, как вы делаете сейчас … если значение не равно null, просто добавьте новую строку в существующую таблицу

// быстрый и грязный пример

 static DataTable additems(string itema, string itemb, string itemc, string itemd, DataTable foo)
{
    DataTable listitems = foo;
    if(foo == null)
    {
       listitems = new DataTable();
       listitems.Columns.Add("itema");
       listitems.Columns.Add("itemb");
       listitems.Columns.Add("itemc");
       listitems.Columns.Add("itemd");
    }

    // Add new items
    listitems.Rows.Add(itema, itemb, itemc, itemd);

    return listitems;
}

private void button1_Click(object sender, EventArgs e)
{
    // add to data grid

    dataGridView1.DataSource = additems("New text", "Almonds", "Butter", "Salt", (DataTable)dataGridView1.DataSource); 
}
  

возможно, вам также захочется подумать о сохранении этого datatable в закрытом поле вместо использования (DataTable)dataGridView1.DataSource , но вопрос был не в хорошем стиле кодирования 😉

Комментарии:

1. каждый раз, когда я нажимаю на кнопку one.. новый элемент должен быть добавлен в таблицу данных, включая предыдущий.. listitems.Rows.Add(itema, itemb, itemc, itemd);