我在插入数据后尝试刷新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();
}
}
}
答案 0 :(得分: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 :(得分:1)
尝试这样做: -
1)。创建绑定源并将此对象的数据源设置为 DataTable。
2)。将DataGrid的数据源设置为 绑定源。
现在,当您提交对DataTable的更改时,它们将自动反映在您的GridView中。
答案 2 :(得分: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();
}