如何在点击事件上更新DataGrid?

时间:2011-04-25 13:09:38

标签: c# .net visual-studio-2008 data-binding

我有以下代码,通过调用函数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 个答案:

答案 0 :(得分:0)

好吧,您可以更改方法sig以获取数据表的新参数...

如果它为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)dataGridView1.DataSource,但问题不在于良好的编码风格;)