2012-09-11 44 views
0

我想在插入数据后刷新一个GridView。我尝试了很多选择,但没有一个为我工作。我该如何解决这个问题?如何在将数据插入表格后刷新GridView控件?

这里是我的代码:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using ScanAction; 
using System.Data.SqlClient; 

namespace DigitalJournalDNAIsolation 
{ 
    public partial class Form1 : Form 
    { 
     private List<Scan> scanList; 

     private SqlConnection connection; 

     public Form1() 
     { 
      InitializeComponent(); 

      scanList = new List<Scan>(); 
     } 

     private void openDatabase() 
     { 
      connection = new SqlConnection(); 
      connection.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\prp\Documents\Visual Studio 2010\Projects\DigitalJournalDNAIsolation\DigitalJournalDNAIsolation\Database1.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"; 
      connection.Open(); 
     } 

     private void closeDatabase() 
     { 
      connection.Close(); 
     } 


     //Add items to the list 
     private void textBoxBarCode_KeyPress(object sender, KeyPressEventArgs e) 
     { 
      if (e.KeyChar == (char)13) 
      { 
       SaveToDataBase(); 



       textBoxBarCode.Clear(); 
      } 

     } 

     //What machine has bees selected by the user 
     public string machineSelected(string machine) 
     { 
      bool mmpp1 = checkBoxMMPP1.Checked; 
      bool mmpp2 = checkBoxMMPP2.Checked; 


      if (mmpp1 == true && mmpp2 == false) 
      { 
       return machine = "MMPP-1"; 
      } 

      if (mmpp1 == false && mmpp2 == true) 
      { 
       return machine = "MMPP-2"; 
      } 

      if (mmpp1 == true && mmpp2 == true) 
      { 
       //MessageBox.Show("Select either MMPP-1 or MMPP-2", "Please select a machine"); 
       return machine = "Multiple machines are selected"; 
      } 
      else 
      { 
       //MessageBox.Show("Select either MMPP-1 or MMPP-2", "Please select a machine"); 
       return machine = "No machine selected"; 
      } 


     } 
     public string machine { get; set; } 

     public string bufferStraat(string straat) 
     { 
      bool manual = checkBoxManual.Checked; 
      bool janus = checkBoxJanus.Checked; 


      if (manual == true && janus == false) 
      { 
       return straat = "Manual"; 
      } 

      if (manual == false && janus == true) 
      { 
       return straat = "Janus"; 
      } 

      if (manual == true && janus == true) 
      { 
       //MessageBox.Show("Select either Manual or Janus", "Please select a machine"); 
       return straat = "Multiple machines are selected"; 
      } 
      else 
      { 
       //MessageBox.Show("Select either Manual or Janus", "Please select a machine"); 
       return straat = "No machine is selected"; 
      } 
     } 

     public string straat { get; set; } 

     public void SaveToDataBase() 
     { 
      string date = DateTime.Now.ToLongDateString(); 

      openDatabase(); 

      SqlCommand command = new SqlCommand(); 
      command.Connection = connection; 
      command.CommandType = CommandType.Text; 
      command.CommandText = "INSERT INTO Table1 (box,username,comment,machine,buffers,date) VALUES (@box,@username,@comment,@machine,@buffers,@date)"; 

      command.Parameters.Add("@box", SqlDbType.VarChar).Value = textBoxBarCode.Text; 
      command.Parameters.Add("@username", SqlDbType.VarChar).Value = textBoxUser.Text; 
      command.Parameters.Add("@comment", SqlDbType.VarChar).Value = textBoxComment.Text; 
      command.Parameters.Add("@machine", SqlDbType.VarChar).Value = machineSelected(machine); 
      command.Parameters.Add("@buffers", SqlDbType.VarChar).Value = bufferStraat(straat); 
      command.Parameters.Add("@date", SqlDbType.VarChar).Value = date; 

      command.ExecuteNonQuery(); 

      closeDatabase(); 
     } 

     public void refreshGrid1() 
     { 
      openDatabase(); 

      SqlCommand readcmd = new SqlCommand(); 
      readcmd.Connection = connection; 
      readcmd.CommandType = CommandType.Text; 
      readcmd.CommandText = "SELECT * FROM Table1"; 

      SqlDataReader reader = null; 

      reader = readcmd.ExecuteReader(); 

      closeDatabase(); 
     } 


     private void Form1_Load(object sender, EventArgs e) 
     { 
      // TODO: This line of code loads data into the 'database1DataSet.Table1' table. You can move, or remove it, as needed. 
      this.table1TableAdapter.Fill(this.database1DataSet.Table1); 
     } 


     private void infoToolStripMenuItem_Click(object sender, EventArgs e) 
     { 
      using (AboutBox1 about = new AboutBox1()) 
      { 
       about.ShowDialog(); 
      } 
     } 

     private void bestandToolStripMenuItem_Click(object sender, EventArgs e) 
     { 
      this.Close(); 
     } 
    } 
} 

回答

1

试着这样做: -

1)。创建绑定源并将该对象的数据源设置为 DataTable。 2)。将您的DataGrid的数据源设置为 绑定源的数据源。

现在,当您提交对DataTable的更改时,它们将自动反映在您的GridView中。

1

使用GridView的DataBind方法

public void refreshGrid1() 
    { 
     openDatabase(); 

     SqlCommand readcmd = new SqlCommand(); 
     readcmd.Connection = connection; 
     readcmd.CommandType = CommandType.Text; 
     readcmd.CommandText = "SELECT * FROM Table1"; 

     SqlDataReader reader = null; 

     reader = readcmd.ExecuteReader(); 

     closeDatabase(); 

     gridView.DataBind(); 

    } 
1

这是我如何解决了这个问题:

private void openAllFromDatabase() 
    { 

     openConnection(); 

     string query = "select * from my_Table order by date desc"; 

     DataSet dset = new DataSet(); 
     SqlDataAdapter adapter = new SqlDataAdapter(query, connection); 

     SqlCommandBuilder cb = new SqlCommandBuilder(adapter); 

     adapter.Fill(dset, "my_Table"); 

     dataGridView1.DataSource = dset; 
     dataGridView1.DataMember = "my_table"; 

     adapter.Update(dset, "my_Table"); 

     closeConnection(); 


    } 
相关问题