C # - если DataGridView содержит искомое слово, экспортируйте эти строки в новый DataGridView - PullRequest
0 голосов
/ 08 марта 2019

У меня есть DataGridView.Я хочу сделать это;Я буду использовать текстовое поле.После заполнения DataGridView я заполню свое текстовое поле словом, и если любая строка моего DataGridView содержит это слово, я экспортирую эти строки в новый DataGridView.Позволь мне объяснить.Мой DataGridView выглядит так:

              Column1                  Column2           Column3
  -------------------------------------------------------------------
         albania algeria                800               55.32
      antarctica argentina              950                         
         brazil bulgaria                25                77
        india indonesia                 30000             78.53
        argentina  iran                 18                0.01
        moldova mongolia                25854             77.50

И представьте, что у меня есть текстовое поле.Допустим, я написал Аргентина в своем текстовом поле.После этой операции мой новый DataGridView выглядит следующим образом:

             Column1                Column2                Column3
     ------------------------------------------------------------------
      antarctica argentina            950                         
      argentina iran                  18                     0.01

Примечание: я не смог выдумать, извините.

Ответы [ 2 ]

1 голос
/ 08 марта 2019

Предполагая, что вам действительно нужны два DataGridViews:

    private void button2_Click(object sender, System.EventArgs e)
    {
        dataGridView2.Rows.Clear();

        var filterText = textBox1.Text;

        foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            if (Convert.ToString(row.Cells[0].Value).Contains(filterText))
            {
                var filteredRow = (DataGridViewRow)row.Clone();

                //Copy values from one DataGridViewRow to another
                foreach (DataGridViewCell cell in row.Cells)
                {
                    filteredRow.Cells[cell.ColumnIndex].Value = cell.Value;
                }

                dataGridView2.Rows.Add(filteredRow);
            }
        }
    }
0 голосов
/ 08 марта 2019

Вы можете сделать что-то вроде этого:

ConvertGridToTable();  // Add data in Datatabledt from gridview
Clipboard.Clear();
DataObject data = new DataObject(DataFormats.Serializable, Datatabledt);
Clipboard.SetDataObject(data);

Теперь Datatabledt доступен в буфере обмена, который вы можете вставить во второе представление сетки, которое вы можете сделать с помощью этого:

DataObject data = (DataObject)Clipboard.GetDataObject();
DataTable dt = (DataTable)data.GetData(DataFormats.Serializable);

foreach (DataRow dr in dt.Rows)
{
    dtData.ImportRow(dr);
}
dtData.AcceptChanges();
grdProgramData.DataSource = dtData;
MessageBox.Show("Data Pasted.");

private void ConvertGridToTable()
{

    if (Datatabledt.Rows.Count > 0)
    { }

    Datatabledt = dtData.Clone();

    foreach (DataGridViewRow gr in YOURGRIDVIEW.SelectedRows)
    {
        DataRow dc = Datatabledt.NewRow();
        dc["KEY-FIELD"] = Int32.Parse(gr.Cells[0].Value.ToString());
        .....
        ---you can set your conditions here on the basis of textbox value---
        Datatabledt.Rows.Add(dc);
    }
    Datatabledt.AcceptChanges();
}
...