下一个和上一个按钮问题

损害

成员
已加入
2016年9月5日
留言内容
6
地点
塞尔维亚
编程经验
3-5
大家好。
我对“下一个”和“上一个”按钮有疑问。当我删除或保存数据时,它会显示在dataGridView中,但是当我移动下一个和上一个按钮时,它不会显示在我的文本框中。
我需要在保存或删除某些方式后加载表格代理,但我不知道如何。我将代码发布在这里,所以请帮助我并发布任何可以帮助我的代码。
谢谢你们。

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 MySql.Data.MySqlClient;


namespace mitAdministrator
{
    public partial class Katedre : Form
    {
        MySqlConnection connection = new MySqlConnection("SERVER=*********;DATABASE=sqlmasdata;UID=*******;PASSWORD=*******;");
        MySqlDataAdapter adapter;
        DataTable table = new DataTable();
        int pos = 0;


        public Katedre()
        {
            InitializeComponent();
        }


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


        public void showData(int index)
        {
            textBoxIndentifikacioniBroj.Text = table.Rows[index][0].ToString();
            textBoxImeKatedre.Text = table.Rows[index][1].ToString();
        }


        private void Katedre_Load(object sender, EventArgs e)
        {
            //Populate textBox
            adapter = new MySqlDataAdapter("SELECT * FROM mitAdminPanelKatedre", connection);
            adapter.Fill(table);
            showData(pos);


            //Disable textBox
            textBoxIndentifikacioniBroj.Enabled = false;
            textBoxImeKatedre.Enabled = false;


            
            // Load Data Grid View
            loadTable();




        }


        public void loadTable()
        {


            MySqlCommand cmdDataBase = new MySqlCommand(" select * from mitAdminPanelKatedre ;", connection);


            try
            {
                MySqlDataAdapter sda = new MySqlDataAdapter();
                sda.SelectCommand = cmdDataBase;
                DataTable dbDataSet = new DataTable();
                sda.Fill(dbDataSet);
                BindingSource bSource = new BindingSource();


                bSource.DataSource = dbDataSet;
                dataGridViewKatedre.DataSource = bSource;
                sda.Update(dbDataSet);
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }


        private void buttonKatedreSave_Click(object sender, EventArgs e)
        {
            try
            {
                if (textBoxIndentifikacioniBroj.Text != "" && textBoxImeKatedre.Text != "")
                {
                    connection.Open();


                    string query = "insert into mitAdminPanelKatedre (katedraID,katedraIme) values (@katedraID,@katedraIme)";


                    using (MySqlCommand cmd = new MySqlCommand(query, connection))
                    {
                        cmd.Parameters.AddWithValue("@katedraID", textBoxIndentifikacioniBroj.Text);
                        cmd.Parameters.AddWithValue("@katedraIme", textBoxImeKatedre.Text);


                        cmd.ExecuteNonQuery();
                    }


                    connection.Close();


                    MessageBox.Show("Katedra " + textBoxImeKatedre.Text + "je uspe?no dodata u bazu!", "Uspesno insertovanje podataka.", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            






            // Lock textBox
            textBoxIndentifikacioniBroj.Enabled = false;
            textBoxImeKatedre.Enabled = false;


            // Unlock button
            buttonKatedreNext.Enabled = true;
            buttonKatedrePrevious.Enabled = true;


            // Refresh Data Grid View
            loadTable();


            //Refresh textBox
            textBoxIndentifikacioniBroj.Refresh();
            textBoxImeKatedre.Refresh();
            this.Refresh();
        }


        private void buttonKatedreNew_Click(object sender, EventArgs e)
        {
            textBoxIndentifikacioniBroj.Enabled = true;
            textBoxImeKatedre.Enabled = true;


            textBoxIndentifikacioniBroj.Clear();
            textBoxImeKatedre.Clear();


            buttonKatedreNext.Enabled = false;
            buttonKatedrePrevious.Enabled = false;
        }


        private void buttonKatedreNext_Click(object sender, EventArgs e)
        {
            pos++;
            if (pos < table.Rows.Count)
            {
                showData(pos);
            }
            else
            {
                pos = table.Rows.Count - 1;
            }
        }


        private void buttonKatedrePrevious_Click(object sender, EventArgs e)
        {
            pos--;
            if (pos >= 0)
            {
                showData(pos);
            }
            else
            {
                pos = 0;
                textBoxIndentifikacioniBroj.Text = table.Rows[0][0].ToString();
                textBoxImeKatedre.Text = table.Rows[0][1].ToString();
            }
        }


        private void buttonKatedreDelete_Click(object sender, EventArgs e)
        {
            string query = "delete from mitAdminPanelKatedre where katedraID='" + textBoxIndentifikacioniBroj.Text + "'  and katedraIme='" +textBoxImeKatedre.Text+ "'";
            MySqlCommand cmdDataBase = new MySqlCommand(query, connection);
            MySqlDataReader myReader;


            try
            {
                connection.Open();
                myReader = cmdDataBase.ExecuteReader();
                MessageBox.Show("Katedra " + textBoxImeKatedre.Text + "je uspe?no obrisana!", "Uspesno brisanje podataka.", MessageBoxButtons.OK, MessageBoxIcon.Information);
                while (myReader.Read())
                {
                }


                myReader.Close();
                connection.Close();




            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                textBoxIndentifikacioniBroj.Clear();
                textBoxImeKatedre.Clear();
            }


            loadTable();
        }
    }
}
 
由主持人最后编辑:

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,566
地点
悉尼,澳大利亚
编程经验
10+
恐怕您做错了所有事情。您已经有了BindingSource,因此您应该只使用它。将BindingSource绑定到您的网格和其他控件,例如
myDataGridView.DataSource = myBindingSource;
myTextBox.DataBindings.Add("Text", myBindingSource, "MyColumn");
要浏览记录,您只需在BindingSource上调用MoveNext或MovePrevious。您对数据所做的任何更改都将下推到DataTable中,然后通过在数据适配器上调用Update将它们保存到数据库中。
 
最佳 底部