Как выполнить поиск в Datagridview (данные хранимых процедур) с помощью текстового поля - PullRequest
0 голосов
/ 08 февраля 2019

В моем приложении для Windows у меня есть элементы управления Datagridview и Textbox.Я использую хранимую процедуру для отображения некоторых данных в представлении данных.Проблема заключается в том, что когда я пытался выполнить поиск в моем сетевом представлении, ничего не происходит, а также при входе в текстовое поле он слишком запаздывает, и я обнаружил, что причина в

CustomersList.DataSource = dt; 

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

Вот код для поиска

Datatable dt;
private void txt_usersearch_TextChanged(object sender, EventArgs e)
{
    using (var con = new SqlConnection(ConfigurationManager.ConnectionStrings["SalesInventoryManagement.Properties.Settings.Setting"].ConnectionString))
        {
            using (var cmd = new SqlCommand("usp_GetCustomers", con))
            {
                cmd.CommandType = CommandType.StoredProcedure;                   
                dt.DefaultView.RowFilter = "Full_Name LIKE '%{txt_usersearch.Text}%'";
                CustomersList.DataSource = dt;
            }
        }
}

, и этот код предназначен для отображения моих данных в форме данных

public class Display 
{
    public static void Display_Customer(DataTable dt, DataGridView dgv)
    {     
        using (var con = new SqlConnection(ConfigurationManager.ConnectionStrings["SalesInventoryManagement.Properties.Settings.Setting"].ConnectionString))
        {
            using (var cmd = new SqlCommand("usp_GetCustomers", con))
            {               
                con.Open();
                cmd.CommandType = CommandType.StoredProcedure;

                using (var sda = new SqlDataAdapter(cmd))
                {                        
                    dt = new DataTable();
                    sda.Fill(dt);
                    dgv.DataSource = dt;
                }

                con.Close();
            }
        }
    }  
}

Форманагрузка

private void ManageCustomer_Load(object sender, EventArgs e)
{
        Display.Display_Customer(dt, CustomersList);
}

Ответы [ 2 ]

0 голосов
/ 09 февраля 2019

Решил:)

DataView dv = dt.DefaultView;
dv.RowFilter = string.Format("Full_Name like '%{0}%'", txt_usersearch.Text);
CustomersList.DataSource = dv.ToTable();
0 голосов
/ 08 февраля 2019

Почему вы используете событие изменения текста.Это не очень хороший подход.Раньше я жил в режиме поиска на Dgv EdiitingControl Event.Вы должны поставить живой поиск на Dgv, и, пожалуйста, покажите мне хранимую процедуру, которую вы пишете

private void dgv_sales_EditingControlShowing(object sender, 
    DataGridViewEditingControlShowingEventArgs e)
        {
        try
        {
            if (dgv_sales.CurrentCell.ColumnIndex==0)
            {
                TextBox prodname = e.Control as TextBox;
                if (prodname!=null)
                {
                    prodname.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
                    prodname.AutoCompleteCustomSource = ClientListDropDown();
                    prodname.AutoCompleteSource = AutoCompleteSource.CustomSource;
                }
            }
            else if (dgv_sales.CurrentCell.ColumnIndex==7)
            {
                TextBox prodname = e.Control as TextBox;
                if (prodname != null)
                {
                    prodname.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
                    prodname.AutoCompleteCustomSource = BatchNoDropDown();
                    prodname.AutoCompleteSource = AutoCompleteSource.CustomSource;
                }

            }
            else
            {
                TextBox prodname = e.Control as TextBox;
                if (prodname != null)
                {
                    prodname.AutoCompleteMode = AutoCompleteMode.None;

                }

            }

        }
        catch (Exception)
        {


        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...