Как убрать дополнительную строку с помощью mysql - PullRequest
0 голосов
/ 12 июня 2019

Я использую Winforms и заполняю свои datagridview значениями SQL database. Эти значения являются пользовательскими значениями из другой формы во время выполнения. Поэтому я буду продолжать компилировать эти значения, я использовал visibleChanged вместо load для отображения моих данных.

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

enter image description here

Как удалить эти дополнительные строки?

Ниже приведен код загрузки значений из database в таблицу данных:

public Testsql()
    {
        InitializeComponent();

        dataGridView1.ColumnCount = 2;
        dataGridView1.Columns[0].Width = 100;
        dataGridView1.Columns[1].Width = 100;
        dataGridView1.Columns[0].Name = "ID";
        dataGridView1.Columns[1].Name = "EXTERIOR";

        dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
        dataGridView1.AllowUserToAddRows = false;
    }

private void Testsql_VisibleChanged(object sender, EventArgs e)
    {
        SqlConnection sqlConnection = new SqlConnection();
        sqlConnection.ConnectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Savertb.mdf;Integrated Security=True";
        sqlConnection.Open();
        SqlCommand sqlCommand = new SqlCommand();
        sqlCommand.Connection = sqlConnection;
        sqlCommand.CommandText = "Select * from Rtbdata";

        SqlDataReader dataReader = sqlCommand.ExecuteReader();

            for (int i = 0; dataReader.Read(); i++)
            {
                dataGridView1.Rows.Add();
                dataGridView1.Rows[i].Cells["ID"].Value = dataReader["Id"].ToString();
                dataGridView1.Rows[i].Cells["EXTERIOR"].Value = dataReader["Exterior"].ToString();
            }

        sqlConnection.Close();
    }

Ответы [ 3 ]

0 голосов
/ 12 июня 2019

Немного расточительно постоянно заполнять новый набор данных, но это упрощает код:

//sqlstr is your SELECT.. connatr isnthe connection string
var da = new MySqlDataAdapter(sqlStr, connStr);
var dt = new DataTable();
da.Fill(dt); //dataadapter will open and close conn for you
gridview.DataSource = dt;
0 голосов
/ 12 июня 2019

Если вы хотите удалить пустые строки в вашей таблице, используйте:

DELETE FROM Rtbdata WHERE [EXTERIOR] IS NULL AND [ID] IS NULL

Использование оператора AND, чтобы не удалять строки, в которых внешний идентификатор OR содержит одно значение

Если вы не хотите показывать их, используйте:

SELECT * FROM Rtbdata WHERE [EXTERIOR] IS NOT NULL AND [ID] IS NOT NULL

Использование оператора AND для отображения строк, если внешний идентификатор OR содержит одно значение

иначе вы можете использовать ИЛИ, если вы не хотите, чтобы ИДЕНТИФИКАТОР ВНЕШНЕГО ИДЕРА был НЕДЕЙСТВИТЕЛЕН *

0 голосов
/ 12 июня 2019

Мне не удалось воспроизвести вашу среду, но я думаю, что ниже будет работать

1) скопировать всю строку таблицы данных в объект данных

DataTable dt = new DataTable();
dt = ((DataView)DataGrid1.ItemsSource).ToTable();  

2), а затем удалить пустую строку в DataTable (еслисуществует) Как удалить пустые строки из DataTable

3) Наконец скопировать обратно все строки с данными и перезаписать объект DataGrid1

dataGridView1.DataSource = dt;
dataGridView1.DataBind();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...