У меня есть база данных MySQL с комментариями, и я уже заполнил мой dataGridView_flaggedComments
с помеченными комментариями с помощью этой функции:Проблем с фильтрацией DataView и дисплей Назад к Оригинальному DataGridView
private void button_Search1_Click(object sender, EventArgs e)
{
commentCount = 0;
//comboBox_stockIndex.SelectedIndex = 0;
richTextBox_flaggedComments.Clear();
dataGridView_flaggedComments.Refresh();
DataTable flaggedcomments = new DataTable("flaggedcomments");
using (MySqlConnection sqlConn = new MySqlConnection(strProvider))
{
using (MySqlDataAdapter da = new MySqlDataAdapter("SELECT Comment_ID, Comments_Date, Author, Title, Comments_Comment, Tickers_Ticker_ID FROM comments ORDER BY Comments_Date ASC", sqlConn))
{
da.Fill(flaggedcomments);
}
}
StringBuilder sb = new StringBuilder();
string[] words = File.ReadAllLines(sourceDirTemp + comboBox_crimeKeywords.SelectedItem.ToString() + ".txt");
var query = flaggedcomments.AsEnumerable().Where(r =>
words.Any(wordOrPhrase => Regex.IsMatch(r.Field<string>("Comments_Comment"), @"\b" + Regex.Escape(wordOrPhrase) + @"\b",
RegexOptions.IgnoreCase)));
dataGridView_flaggedComments.DataSource = query.AsDataView();
}
В помечено комментариях появляются в dataGridView_flaggedComments
относятся к разным ценам на акции (каждый запас имеет свой уникальный символ и его Ticker_ID). Я пытаюсь отфильтровать текущий dataGridView_flaggedComments
так, чтобы он показывал только то, что я выбрал из comboBox_stockIndex
.
Однако, мой код каким-то образом получит все комментарии для этого конкретного символа из базы данных, а не фильтрацию того, что находится в dataGridView_flaggedComments
. Может ли кто-нибудь указать, что пошло не так?
Я рассмотрел довольно много вопросов в SO, но не мог действительно связать это. Вот мой код, и было бы очень полезно, если бы я мог помочь! Спасибо!
private void comboBox_stockIndex_SelectedIndexChanged(object sender, EventArgs e)
{
DataTable link_stockIndex = new DataTable("link_stockIndex");
using (MySqlConnection sqlConn = new MySqlConnection(strProvider))
{
using (MySqlDataAdapter da = new MySqlDataAdapter("SELECT Ticker_ID, Symbol FROM tickers", sqlConn))
{
da.Fill(link_stockIndex);
}
}
foreach (DataRow da in link_stockIndex.Rows)
{
for (int i = 0; i < dataGridView_flaggedComments.Rows.Count - 1; i++)
{
if (dataGridView_flaggedComments.Rows[i].Cells["Tickers_Ticker_ID"].Value.ToString() != "" && comboBox_stockIndex.SelectedItem.ToString() == da["Symbol"].ToString())
{
(dataGridView_flaggedComments.DataSource as DataView).RowFilter = string.Format("Tickers_Ticker_ID = '{0}'", da["Ticker_ID"]);
}
}
}
}
Привет, Энди, я изучаю ваше объяснение. База данных 'tickers' не изменится вообще, она останется неизменной на протяжении всей весь процесс. – Shyuan
Хорошо, это означает мое предложение, что вы не должны запрашивать эту таблицу каждый раз, когда ваш combobox выбрал индекс ha s изменилось правильно. –
Привет Энди, не возражаете ли вы взглянуть на https://pastebin.com/b9jq3wHn? Даже когда я уже упростил 'comboBox_stockIndex_SelectedIndexChanged', код все еще не работает, он все равно покажет все комментарии для Tickers_Ticker_ID = 1, а не только из помеченных комментариев из' dataGridView_flaggedComments'. Что-то не так с привязкой DataView или DataGridView? – Shyuan