Кнопка Datagridview с SQL - PullRequest
       10

Кнопка Datagridview с SQL

0 голосов
/ 24 мая 2019

У меня есть DataGridView, вызывающий SQL Server и отображающий в столбцах и строках собранную информацию. В последнем ряду он отображается как кнопка с текстом (VIEW) .. по какой-то причине, когда я беру информацию, она показывает только VIEW, а не загружает данные из MySQL в текстовое поле, как должно

Я пробовал множество вещей и не могу заставить его работать с кнопкой просмотра данных в столбце / строках.

    private void frmRepoPremier_Load(object sender, EventArgs e)
                {
                DataSet ds = new DataSet();
                string query = "select * from Repos";

                MySqlConnection sqlConnection = new MySqlConnection(MyConnectionString);
                MySqlCommand sqlCommand = new MySqlCommand(query, sqlConnection);
                MySqlDataAdapter sqlDataAdapter = new MySqlDataAdapter(sqlCommand);
                sqlConnection.Open();
                sqlDataAdapter.Fill(ds);
                sqlConnection.Close();
                dgvBuildings.DataSource = ds.Tables[0];

                DataGridViewButtonColumn btn = new DataGridViewButtonColumn();
                dgvBuildings.Columns.Add(btn);
                btn.HeaderText = "Photo";
                btn.Text = "View";
                btn.Name = "btn";
                btn.UseColumnTextForButtonValue = true;           }

            private void dgvBuildings_CellClick(object sender, DataGridViewCellEventArgs e)
            {
                var senderGrid = (DataGridView)sender;

                if (senderGrid.Columns[e.ColumnIndex] is DataGridViewButtonColumn && e.RowIndex >= 0)
                {
//TRYING TO LOAD TO TEXTBOX WHEN ROW IS CLICKED AND SHOW VALUE OF PHOTO COLUMN FROM DATABASE IN SQL

//TRYING HERE! 

 textBox1.Text = dgvBuildings.Rows[e.RowIndex].Cells[11].ToString();

//TRYING HERE!
               // for (int x = 0; x <= dgvBuildings.Rows.Count - 1; x++)
               // {
               //     textBox1.Text = dgvBuildings.Rows[x].Cells[11].ToString();
               // }

                    //OPEN IMAGE FROM BUTTON
                  //  System.Diagnostics.Process.Start(textBox1.Text);
                }
            }

Когда я нажму на кнопку VIEW, я открою браузер или PictureBox с изображением (ссылка на изображение хранится на сервере sql) и должна прочитать его в текстовом поле

Ответы [ 2 ]

0 голосов
/ 24 мая 2019

Хорошо, так что включите, чтобы сделать это, я просто спрятал столбец, содержащий строку с фотографией, и сохранил код для добавления кнопки в строки .. так что спасибо вам за помощь, Сильвио ... оцените это

  private void frmRepoPremier_Load(object sender, EventArgs e)
        {
            DataSet ds = new DataSet();
            string query = "select * from Repos";

            try
            {
                MySqlConnection sqlConnection = new MySqlConnection(MyConnectionString);
                MySqlCommand sqlCommand = new MySqlCommand(query, sqlConnection);
                MySqlDataAdapter sqlDataAdapter = new MySqlDataAdapter(sqlCommand);
                sqlConnection.Open();
                sqlDataAdapter.Fill(ds);
                sqlConnection.Close();
                dgvBuildings.DataSource = ds.Tables[0];

                DataGridViewButtonColumn btn = new DataGridViewButtonColumn();
                dgvBuildings.Columns.Add(btn);
                btn.HeaderText = "Photos";
                btn.Text = "View";
                btn.Name = "btn";
                btn.UseColumnTextForButtonValue = true;
               //HID THIS COLUMN TO REPLACE THE VIEW BUTTON
                this.dgvBuildings.Columns[11].Visible = false;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error: " + ex, "Error: Load Data", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            finally
            {
                if (connection.State == ConnectionState.Open)
                { connection.Close(); }

            }
        }

        private void dgvBuildings_CellClick(object sender, DataGridViewCellEventArgs e)
        { var senderGrid = (DataGridView)sender;
          if (senderGrid.Columns[e.ColumnIndex] is DataGridViewButtonColumn && e.RowIndex >= 0)
          { 
          //OPEN IMAGE FROM BUTTON
          System.Diagnostics.Process.Start(textBox1.Text);
          }

        }

        private void dgvBuildings_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (e.RowIndex >= 0)
            {
                DataGridViewRow row = this.dgvBuildings.Rows[e.RowIndex];
                textBox1.Text = row.Cells[12].Value.ToString();

                try
                {
                    if (row.Cells[12].Value != null)

                    { pictureBox1.LoadAsync(row.Cells[12].Value.ToString()); }
                    else
                    { return; }
                }
                catch (Exception)
                {
                    pictureBox1.Image = null;
                    return;
                }

            }
        }
0 голосов
/ 24 мая 2019

Я, Джейсон, думаю, этот код поможет тебе.

КОД:

        DataSet ds = new DataSet();
        string query = "select * from tab_menu";

        SqlConnection sqlConnection = new SqlConnection(@"Persist Security Info=False;User ID=sa;Password=sa;Initial Catalog=EasyAdmin;Data Source=.");
        SqlCommand sqlCommand = new SqlCommand(query, sqlConnection);
        SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sqlCommand);
        sqlConnection.Open();
        sqlDataAdapter.Fill(ds);
        sqlConnection.Close();
        dataGridView1.DataSource = ds.Tables[0];

        DataGridViewButtonColumn btn = new DataGridViewButtonColumn();
        dataGridView1.Columns.Add(btn);
        btn.HeaderText = "Botoes";
        btn.Text = "Clicar Aqui";
        btn.Name = "btn";            
        btn.UseColumnTextForButtonValue = true;

И создать событие (CellClick) в DataGridView

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
    {
        var senderGrid = (DataGridView)sender;

        if (senderGrid.Columns[e.ColumnIndex] is DataGridViewButtonColumn && e.RowIndex >= 0)
        {
            //TODO - Button Clicked - Execute Code Here to change the text            
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...