0

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();
        }
    }
}
4

3 に答える 3

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();

    }
于 2012-09-11T08:17:49.040 に答える
1

これをやってみてください:-

1)。バインディングソースを作成し、このオブジェクトのデータソースをDataTableに設定します。

2)。DataGridのデータソースをバインディングソースのデータソースに設定します。

これで、DataTableに変更をコミットするたびに、それらは自動的にGridViewに反映されます。

于 2012-09-11T08:19:12.990 に答える
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();


    }
于 2012-09-12T12:00:34.133 に答える