Как я могу реализовать кнопку для поиска результатов в списке
C#, Windows Forms - я сделал почти 90% проблемы, но кнопка поиска не работает!
Дан доступ к файлу с данными (ниже). Мне нужно построить программу (GUI-приложение), которая использует LINQ для получения данных из файла базы данных под названием (students.accdb).
Мне нужны переключатели для выбора и поиска по фамилии или программе.
Я должен быть в состоянии искать, если введена полная или частичная фамилия.
Результат должен отображаться в списке, который прокручивается.
Результат должен быть таким: Фамилия, Имя (StudentID) имя программы
Кнопка Очистить должна очистить поле списка.
Подсказка по запросу: используйте функцию Contains для сравнения строк в запросе.
Я не могу заставить кнопки поиска или очистки работать! Я попробовал Search_Click и SelectedIndexChanged, но не могу понять, чего мне не хватает. Это первый раз, когда я делаю поиск в C# Windows Forms. Я правильно определил имена списка, текстового поля, кнопки поиска, кнопки очистки и переключателей.
Я уже определил:
Name of List Box: lstResultListBox Name of Text Box: LastNameProgramTextBox Name of Search Button: SearchButton Radio button 1: byLastNameRadioButton Radio button 2: byProgramRadioButton Clear Button: ClearButton
Не могли бы вы мне помочь?
Спасибо
Вот скриншот (извините, я не смог найти место для загрузки изображения)
https://i.stack.imgur.com/BHsAw.png[][^]
Это таблица в файле Access:
StudentID ProgramName ProgramCode LastName FirstName 200056 Maths 2522 Anderson Gregory 200057 Maths 2522 Anderson John 200058 Computer 2421 Bay Samuel 200059 Maths 2522 Brown James 200060 Computer 2389 Brown Alicia 200061 English 2421 Doe Sally 200062 English 2421 George Jane 200063 Maths 2522 Gray Mark
Что я уже пробовал:
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 StdudentSearch { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { // TODO: This line of code loads data into the 'simpleStudentDataSet.Student' table. You can move, or remove it, as needed. this.studentTableAdapter.Fill(this.simpleStudentDataSet.Student); } private void Search_Click(object sender, EventArgs e) { var students = from s in this.simpleStudentDataSet.Student where s.LastName == LastNameProgramTextBox.Text where s.ProgramName == LastNameProgramTextBox.Text select s; foreach (var s in students) { lstResultListBox.Items.Add(s.LastName + ", " + s.FirstName); } } private void lstResultListBox_SelectedIndexChanged(object sender, EventArgs e) { LastNameProgramTextBox.Text = lstResultListBox.SelectedItem.ToString(); } } }
Richard MacCutchan
Я не знаю полного ответа, но вы не должны использовать TextBox.Текстовые элементы непосредственно в вашем коде LINQ; особенно не один и тот же для разных полей. Посмотрите на значения, введенные пользователем, чтобы увидеть, являются ли они полными или частичными именами. А как насчет поиска всех, чье имя начинается с "Смит", например?