как обновить таблицу данных?

#c#

#c#

Вопрос:

я использую c # в качестве интерфейса, а ms access — в качестве серверной части

Я отображаю сетку данных только при изменении индекса в поле со списком

  private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        refershGridView(comboBox1.Text);
    }
  

но когда я вношу какие-либо обновления в таблицу данных, обновление отражается только после того, как я произвожу выбранное событие изменения индекса

я попробовал datagidview1.refresh(), а также неявно вызвал мои функции refershGridView(ComboBox1.Text)

но мой вид сетки обновляется только тогда, когда я делаю выбранное изменение индекса

код для refershGridView(ComboBox1.Text)

 private void refershGridView(string tableName)
    {

        saveBttnSwitch = 0;//for save button swicth 
        //setting back to intial user interface ..



        clearVisibilty();
        clearall();
        button1.Visible = true;
        button3.Visible = false;

        label11.Visible = false;
        try
        {
            OleDbConnection mycon = new OleDbConnection();

            mycon.ConnectionString = ConnString;

            //create the database query
            string query = null;
            if (tableName == "employee")
            {
                query = "SELECT fname,lname,ssn FROM employee";

                dataGridView1.Visible = true;
            }
            if (tableName == "project")
            {


                query = "SELECT pname,pnumber FROM project";

                dataGridView1.Visible = true;

            }



            //create an OleDbDataAdapter to execute the query
            OleDbDataAdapter dAdapter = new OleDbDataAdapter(query, mycon);


            //create a command builder
            OleDbCommandBuilder cBuilder = new OleDbCommandBuilder(dAdapter);

            //create a DataTable to hold the query results
            DataTable dTable = new DataTable();

            //fill the DataTable
            try
            {
                dAdapter.Fill(dTable);
            }

            catch (OleDbException exp)
            {
                label11.Text = "file couldnt be found...kindly check Db file location ";
                label11.Visible = true;
                button1.Visible = false;

            }
            //  DataGridView dgView = new DataGridView();

            //BindingSource to sync DataTable and DataGridView
            BindingSource bSource = new BindingSource();

            //set the BindingSource DataSource
            bSource.DataSource = dTable;

            //set the DataGridView DataSource
            dataGridView1.DataSource = bSource;
            // dataGridView1.Dock = DockStyle.Fill;
            dataGridView1.AutoGenerateColumns = true;

            mycon.Close();
        }
        catch (System.Data.SqlClient.SqlException ex)
        {

            throw new InvalidOperationException("Data could not be read", ex);

        }

        this.button2.Visible = false;

    }
  

Комментарии:

1. могу ли я узнать ваш текущий код в методе refershGridView

2. он обновляется, если снова выбрать тот же индекс. и я также попытался вызвать refreshGridView(combo1.text) в том месте, где я обновляю значения, которые ссылаются на него в режиме отладки, но не при выполнении без отладки

Ответ №1:

Выполняет refershGridView(comboBox1.Text); ли пополнение DataGrid?

Если это так, вызовите его из любого другого места, где вы хотите, чтобы ваши данные были пополнены. Если SelectedIndexChanged even из списка combo является единственным местом, где вы его заполняете, он не будет обновляться, если вы не измените выделение.

И, как предлагает @Bryan, лучше, если мы увидим какой-нибудь код.

Комментарии:

1. он обновляется, если снова выбрать тот же индекс. и я также попытался вызвать refreshGridView(combo1.text) в том месте, где я обновляю значения, которые ссылаются на него в режиме отладки, но не при выполнении без отладки

2. Поскольку я не видел никаких проблем в коде, я попробовал использовать простую форму, сетку и комбинацию (без вашей видимости кнопок и прочего, конечно), используя SQL Server. Работает нормально. Вы говорите, что все сценарии отлично работают в режиме отладки, не так ли?

3. я. это выглядит нормально, когда я его отлаживаю, но не когда я его выполняю

4. Извини, братан, я понятия не имею о проблеме за пределами этого пункта, потому что это работает. Надеюсь, вы не выполняете многопоточность (я видел, как это происходит в многопоточных приложениях, когда все сделано неправильно). Надеюсь, вы нашли решение.

Ответ №2:

Попробуйте очистить dTable и dataGridView1.DataSource перед заполнением таблицы данных и установкой источника данных DataGridView

 dTable = new DataTable();
dataGridView1.DataSource = nothing;