Значение поиска в текстовом поле, чтобы оно находилось в данных, расположенных в gridView

В настоящее время я открываю файл .xls, введя местоположение файла в текстовое поле, и я хочу найти определенное значение, введя его в текстовое поле и удалив строку, в которой находится значение.

Вот код для Form1, который содержит dataGridView:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb;

namespace Plan_de_lucru_1._0
{
    public partial class frPlanMain : Form
    {
        public frPlanMain()
        {
            InitializeComponent();
        }

        private void frPlanMain_Load(object sender, EventArgs e)
        {

        }

        private void GoButton_Click(object sender, EventArgs e)
        {
            string constr = "Provider = MicroSoft.Jet.OLEDB.4.0; Data Source=" + locTBox.Text + "; Extended Properties =\"Excel 8.0; HDR=Yes;\";";
            OleDbConnection con = new OleDbConnection(constr);
            OleDbDataAdapter sda = new OleDbDataAdapter("Select * From [" + shTBox.Text + "$]", con);
            DataTable dt = new DataTable();
            sda.Fill(dt);
            dGVPlan.DataSource = dt;
            new SearchWindow().Show();
            this.Show();
        }
    }
}

Это форма2, которая содержит текстовое поле и кнопку, в которую я хочу ввести значение поиска.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Plan_de_lucru_1._0
{
    public partial class SearchWindow : Form
    {
        public SearchWindow()
        {
            InitializeComponent();
        }

        private void SearchButtonW_Click(object sender, EventArgs e)
        {
            String str = "select * from searchBox where ( Name like '%' + @search + '%')";
            BindingSource bs = new BindingSource();

        }
    }
}

Спасибо за помощь.


person Stefan Siman    schedule 25.03.2016    source источник
comment
вы можете сделать это, используя DataTable, который изначально был привязан к существующему представлению datagridview. DataTable имеет свойство Filter. Я опубликую простой пример того, насколько это просто.   -  person MethodMan    schedule 25.03.2016
comment
Я думаю, что один из вариантов здесь сделает это для вас! stackoverflow.com/questions/31809201/   -  person ASH    schedule 25.03.2016


Ответы (2)


У меня есть DataTable, объявленный на уровне класса.

protected static DataTable dtSearch = null; 

Затем у меня есть нажатие кнопки, которое ищет DataTable для фильтрации на основе значения, которое я ввел в поле Textbox.Text.

protected void btnSrch_Click(object sender, EventArgs e)
{
    if (txtSearch.Text.Length > 0)
    {
        dtSearch = dtInitialDatable;//the datatable that was bound to my DatagridView 
        dv = new DataView(dtSearch);
        dv.RowFilter = "Data_Column_Name LIKE '%" + txtSearch.Text.ToUpper() + "%'";
        //bind the DataGridView to dv 
        myDataGridView.DataSource = dv;
        //myDataGridView.DataBind();//uncomment if you are doing this in webform
    }
    else
    {
        dtSearch = null;
        dv = null;
    }
}
person MethodMan    schedule 25.03.2016

Это сработало для меня:

namespace Plan_de_lucru_1._0
{
    public partial class SearchWindow : Form
    {
        public frPlanMain refTofrPlanMain;

        public SearchWindow(frPlanMain f) //<<Edit made here 
        {
            refTofrPlanMain = f;
            InitializeComponent();
        }

        private void SearchButtonW_Click(object sender, EventArgs e)
        {
            {
                (refTofrPlanMain.dGVPlan.DataSource as DataTable).DefaultView.RowFilter = string.Format("Vodic = '{0}'", searchTBoxW.Text);
                foreach (DataGridViewRow item in refTofrPlanMain.dGVPlan.Rows)
                {
                    if (item.Visible)
                    {
                        item.Selected = true;
                        break;
person Stefan Siman    schedule 12.04.2016