Так что я делаю программу с несколькими категориями с несколькими нотами, хранящимися в ней. Я студент, и мы получили задание работать с localdb SQL-сервера, чтобы сохранить наши категории и заметки. Программа показывает категории и заметки с помощью элемента управления древовидной структурой.Я хочу добавить объект в свой список, но способ, которым организованы вложенные циклы, делает это невозможным (C#)
Теперь я пытаюсь создать поисковую панель для своих заметок. Он должен фильтровать заголовок заметки.
Мой вопрос в том, как я могу получить все заметки из категории и добавить их в ту же категорию? Теперь все заметки отображаются в разных категориях, но с тем же именем. Это связано с тем, что мой основной цикл обрабатывает ноты и процессы внутри цикла.
Когда я помещаю «categoriesUI1.Categories.Add (category);» за контуром while я вижу только 1 категорию с 1 заметкой, потому что сначала обрабатывается цикл нот.
Вот некоторые дополнительные скриншоты, чтобы дать вам лучшее представление о том, как работает моя программа:
Перед фильтрацией: https://gyazo.com/cea5c4d9ff18fb93c9f47cf336942bc9
После фильтрации на 'test2': https://gyazo.com/282240e5f1a754389688c68257893d92
connection = new SqlConnection(@"Data Source=(localdb)\mssqllocaldb;Initial Catalog=dbNotes;Integrated Security=True;MultipleActiveResultSets=true");
categoriesUI1.tvwCategories.SelectedNode = categoriesUI1.tvwCategories.TopNode;
int count = categoriesUI1.Categories.Count;
if (count > 0)
{
for (int i = count; i > 0; i = count)
{
categoriesUI1.Categories.RemoveAt(0);
count = categoriesUI1.Categories.Count;
}
}
connection.Open();
SqlCommand commandNote = new SqlCommand("SELECT ID, Cat_ID, Titel, Text, Created FROM tblNote WHERE Titel LIKE '%" + searchBarUI1.getTextValue() + "%'", connection);
SqlDataReader readerNote = commandNote.ExecuteReader();
if (readerNote.HasRows)
{
Category category = new Category();
while (readerNote.Read())
{
int id = readerNote.GetInt32(0);
int Cat_id = readerNote.GetInt32(1);
string title = readerNote.GetString(2);
string text = readerNote.GetString(3);
DateTime created = readerNote.GetDateTime(4);
string Cat_title = "";
SqlCommand commandCategory = new SqlCommand("SELECT Titel FROM tblCategory WHERE ID = " + Cat_id, connection);
SqlDataReader readerCategory = commandCategory.ExecuteReader();
if (readerCategory.HasRows)
{
while (readerCategory.Read())
{
Cat_title = readerCategory.GetString(0);
category = new Category(Cat_id, Cat_title);
}
}
Note note;
note = new Note(id, title, text, created);
category.Notes.Add(note);
readerCategory.Close();
categoriesUI1.Categories.Add(category);
}
}
readerNote.Close();
connection.Close();