У меня есть dataGrid в моем приложении. Я использую событие TextChanged для фильтрации сетки данных. У меня есть четыре текстовых поля для фильтрации. Я использую SQL-запрос с LIKE , Когда я использую фильтр только с двумя текстовыми полями, этот метод работает отлично. Но если я использую три, из четырех (поскольку мне нужно четыре), он не фильтрует сетку данных справа. Он не отображает все совпадения и когда я очищаю текстовое поле, он не сбрасывает dataGrid, чтобы отобразить всю таблицу.dataGrid поиск с sql LIKE-запрос не работает как он должен
Мой XAML:
<DataGrid x:Name="dataGridSearch" HorizontalAlignment="Center" VerticalAlignment="Top" Height="227" Width="990" Margin="0,202,0,0" ItemsSource="{Binding DataSource}" AutoGenerateColumns="False" IsReadOnly="True">
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding name}" Width="200" />
<DataGridTextColumn Header="Type" Binding="{Binding type}" Width="300"/>
<DataGridTextColumn Header="City" Binding="{Binding city}" Width="250" />
<DataGridTextColumn Header="Place" Binding="{Binding place}" Width="*" />
</DataGrid.Columns>
</DataGrid>
Мой код для TextChanged события:
using (SqlConnection sc = new SqlConnection(ConString))
{
sc.Open();
string query_search = "SELECT * FROM object WHERE name LIKE @name AND type LIKE @type AND city LIKE @city AND place LIKE @place";
SqlCommand com = new SqlCommand(query_search, sc);
com.Parameters.AddWithValue("@name", "%" + textBoxPlace.Text + "%");
com.Parameters.AddWithValue("@type", "%" + textBoxType.Text + "%");
com.Parameters.AddWithValue("@city", "%" + textBoxCity.Text + "%");
com.Parameters.AddWithValue("@place", "%" + textBoxPlace.Text + "%");
using (SqlDataAdapter adapter = new SqlDataAdapter(com))
{
DataTable dt = new DataTable();
adapter.Fill(dt);
dataGridSearch.ItemsSource = dt.DefaultView;
}
sc.Close();
}
Кроме того, при открытии окна, у меня есть метод, который заполняет DataGrid в начале
public void fillGrid()
{
using (SqlConnection sc = new SqlConnection(ConString))
{
sc.Open();
string query = "SELECT * FROM object";
SqlCommand com = new SqlCommand(query, sc);
using (SqlDataAdapter adapter = new SqlDataAdapter(com))
{
DataTable dt = new DataTable();
adapter.Fill(dt);
adapter.Update(dt);
// dataGridSvi.AutoGenerateColumns = false;
dataGridSearch.ItemsSource = dt.DefaultView;
}
sc.Close();
}
}
это просто опечатка для stackoverfow question.i есть все введён в моем коде.sorry для typo.также он выглядит так, что для некоторых полей из базы данных он работает fine.but для некоторых это не – Alexander
ОК, и если вы делаете это с 'button'? не с 'textchange event' ?? можете ли вы отправить точный код? – Noah