【发布时间】:2014-11-03 00:16:11
【问题描述】:
我有这个函数button_Search1_Click来搜索匹配关键字的cmets,然后在dataGridView_flaggedComments中显示这些标记的cmets。
接下来,如果comboBox_stockIndex 有任何更改,我希望进行过滤,即使用1 的Tickers_Ticker_ID 过滤dataGridView_flaggedComments 中标记的cmets。但是,当我这样做时,所有 cmets(无论是否标记)都属于 Tickers_Ticker_ID 的 1 显示在我的 dataGridView_flaggedComments 上。它应该只显示标记为 Tickers_Ticker_ID 的 1 的 cmets,而不是所有 cmets。
我认为DataSource 有问题,但我想不通。任何帮助将不胜感激!谢谢!
(如果我确实错过了任何类似的问题,请指出。非常感谢!)
private void button_Search1_Click(object sender, EventArgs e)
{
commentCount = 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();
}
private void comboBox_stockIndex_SelectedIndexChanged(object sender, EventArgs e)
{
DataView dv = dataGridView_flaggedComments.DataSource as DataView;
if (dv == null)
throw new Exception("Bad Data Source type");
else
{
dv.RowFilter = string.Format("Tickers_Ticker_ID = '1'");
dataGridView_flaggedComments.DataSource = dv;
}
}
【问题讨论】:
标签: c# datagridview datatable dataview rowfilter