当我从数据库中获取数据时,如何在datagridview中添加额外的列

时间:2013-09-04 14:56:28

标签: c# .net winforms sql-server-2008 datagridview

在我的数据库中,我有4列。我在datagridview中获取此数据库值。但我想在datagridview中添加两列。所以,我想用6列创建一个datagridview。在这6列中,4列将由数据库值填充。我怎么能这样做?

        OleDbConnection con = new OleDbConnection("CONNECTION STRING");
        con.Open();
        DataTable dtusers = new DataTable();

        OleDbCommand cmd = new OleDbCommand("Select Code,Description,Qnty,Rate from PurchaseTable'", con);
        OleDbDataAdapter da = new OleDbDataAdapter(cmd);
        da.Fill(dtusers);
        dataGridView1.DataSource = dtusers;
        dataGridView1.Columns[0].Name = "Code ";
        dataGridView1.Columns[1].Name = "Description";
        dataGridView1.Columns[2].Name = "Qnty";
        dataGridView1.Columns[3].Name = "Rate";
        con.Close();

这是4列。代码,描述,Qnty,速率。我想在此datagridview中添加两列。金额和叙述。但是,在PurchaseTable中没有Amount和Narration列。我可以这样做吗?

3 个答案:

答案 0 :(得分:1)

如果您想要空白列,则创建它们并插入。如果数据在数据库中,则在查询中添加连接以检索数据。

添加空白栏

DataGridView dgv = new DataGridView();
dgv.DataSource = dtusers;

DataGridViewColumn amount = new DataGridViewColumn();
amount.HeaderText = "Amount";
amount.Name = "Amount";
dgv.Columns.Insert(0, amount);

DataGridViewColumn narration = new DataGridViewColumn();
narration.HeaderText = "Narration";
narration.Name = "Narration";
dgv.Columns.Insert(0, narration);

答案 1 :(得分:1)

假设您已经拥有dtusers ..

  1. 将列添加添加到dtuser .. http://msdn.microsoft.com/en-us/library/hfx3s9wd.aspx

  2. 为表格中的所有行循环以填充新列

  3. 将表格指定为dgv数据源.. dataGridView1.DataSource = dtusers;

答案 2 :(得分:0)

由于您的列名称是硬编码的,我认为您可以通过设计器在datagridview中创建预定义列(点击datagridview - >选择编辑列)。

创建所需的所有6列。在前四个设置DataPropertyName到查询列的名称。最后两个留空。

请记住在将数据绑定到datagridview之前设置datagridview.AutoGeneratedColumns = false; ...(form_Load处理程序中的某处)

在此之后,您的代码将是:

using (OleDbConnection con = new OleDbConnection("CONNECTION STRING"))
{
    con.Open();
    DataTable dtusers = new DataTable();

    using(OleDbCommand cmd = new OleDbCommand("Select Code,Description,Qnty,Rate from PurchaseTable'", con))
    {
        OleDbDataAdapter da = new OleDbDataAdapter(cmd);
        da.Fill(dtusers);
        dataGridView1.DataSource = dtusers;
    } 
    con.Close(); 
}