2016-05-31 111 views
0

我想在不使用数据库的情况下在datagridview中显示数据。在我的UI中,有3个字段中插入了值,并希望在数据网格视图中显示它们,当我执行该程序时,它不会给出任何错误,也不会在datagridview中显示任何值。如何在不使用数据库的情况下在datagridview中显示数据

Picture

private void Submit_Click(object sender, EventArgs e) 
    { 
     DataRow dr = dt.NewRow(); 
     dr[0] = txtBox1.Text; 
     dr[1] = txtBox2.Text; 
     dr[2] = txtBox3.Text; 
     dataGridView1.DataSource = dt; 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     dt = new DataTable(); 
     DataColumn dc1 = new DataColumn("Name"); 
     DataColumn dc2 = new DataColumn("Email"); 
     DataColumn dc3 = new DataColumn("ConatctNumber"); 
     dt.Columns.Add(dc1); 
     dt.Columns.Add(dc2); 
     dt.Columns.Add(dc3); 
     dt.Rows.Add(dc1); 
     DataRow dr = dt.NewRow(); 
     dataGridView1.DataSource = dt; 
    } 

回答

2
DataTable dt = new DataTable(); 
    private void Form1_Load(object sender, EventArgs e) 
     {  
     dt.Columns.Add ("Name"); 
     dt.Columns.Add ("Email"); 
     dt.Columns.Add ("ConatctNumber");   
     // dt.Rows.Add(dc1); dc1 is a column not a row >>> 
     // DataRow dr = dt.NewRow(); not necessary 
     dataGridView1.DataSource = dt; 
     } 
    private void Submit_Click(object sender, EventArgs e) 
     { 
      DataRow dr = dt.NewRow(); 
      dr[0] = txtBox1.Text; 
      dr[1] = txtBox2.Text; 
      dr[2] = txtBox3.Text; 
      dt.rows.add(dr); //You forgot to add new row in your datatable 
      // dataGridView1.DataSource = dt; is already definedin loadForm 
     } 
+0

'dt'由于其范围而无法访问。 –

+0

@ MAciejLos感谢它更正 –

+0

嗨,感谢您的帮助,它现在正常工作 –

0

就快,但你需要做的就是添加的新行DataTable

DataRow dr = dt.NewRow(); 
    dr[0] = txtBox1.Text; 
    dr[1] = txtBox2.Text; 
    dr[2] = txtBox3.Text; 
    dt.Rows.Add(dr);    // <<< ==== 
    dataGridView1.DataSource = dt; 

注意,没有构造函数DataRowDataTable.NewRow()调用仅使用表布局作为模板用于新行中的列;它实际上并没有将它添加到表格中。

+0

由于变量的范围,“dt”不可访问。 –

+2

废话。它必须是一个类级别的变量,否则OP代码将无法编译。 (它可以通过DataSource等来重新获取,但这没什么意义..) – TaW

+0

看看OP提供的代码。在哪里声明dt变量? –

相关问题