c# - 在一个 datagridview 中合并两个查询
问题描述
我的应用程序通过 openfiledialog 连接到 excel 文件。我有两个搜索,主要搜索和次要搜索。我想在一个 datagridview 中得到他们的结果。我的代码(主要搜索):
private void searchbtn_Click(object sender, EventArgs e)
{
try
{
string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;";
OleDbConnection conn = new OleDbConnection(connStr);
OleDbDataAdapter da = new OleDbDataAdapter("Select * from [" + testcb.SelectedItem.ToString() + "$] where [" + comboBox1.SelectedItem.ToString() + "] = '" + textBox5.Text + "'", conn);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView2.DataSource = dt;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
和二次搜索:
private void button1_Click(object sender, EventArgs e)
{
try
{
string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;";
OleDbConnection conn = new OleDbConnection(connStr);
OleDbDataAdapter da = new OleDbDataAdapter("Select * from [" + testcb.SelectedItem.ToString() + "$] where [" + addcb.SelectedItem.ToString() + "] = '" + addtb.Text + "'", conn);
DataTable ds = new DataTable();
da.Fill(ds);
dataGridView2.DataSource = ds;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
有任何想法吗?
解决方案
你可以有 2 个 DataTables 可以说dt1
,dt2
和一个合并的dtAll
. 然后您可以合并 2 并将其设置为 DataSource
private UpdateDataSource()
{
dataGridView2.Rows.Clear();
dataGridView2.Refresh();
dtAll.Clear();
if(dt1 == null && dt2 != null)
{
dtAll = dt2;
}
else if(dt2 == null && dt1 != null)
{
dtAll = dt1;
}
else if(dt1 != null && dt2 != null)
{
dtAll = dt1.Copy();
dtAll.Merge(dt2);
}
else
{
dtAll = null;
}
dataGridView2.DataSource = dtAll;
}
你的事件处理程序应该是这样的:
private void button1_Click(object sender, EventArgs e)
{
try
{
string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;";
OleDbConnection conn = new OleDbConnection(connStr);
OleDbDataAdapter da = new OleDbDataAdapter("Select * from [" + testcb.SelectedItem.ToString() + "$] where [" + addcb.SelectedItem.ToString() + "] = '" + addtb.Text + "'", conn);
dt2.Clear();
da.Fill(dt2);
UpdateDataSource();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
推荐阅读
- python-2.7 - 无法在 /usr/lib/Python2.7 中创建站点包,它显示“不允许操作”
- c++ - Running the Visual Studio Profiler from the command line
- javascript - 从列表中单击后如何显示图像?
- ruby-on-rails - 通过避免在 graphql 中进行 N+1 查询来获取 user_profiles
- linux-kernel - 从内核用户空间访问 u-boot 变量
- git - 从 github 中完全删除旧的提交(不仅仅是从历史中)
- sql - Varchar 相等性如何在 SQL 表达式中起作用?
- r - R - 如何从给定日期获取一周和一个月的结束日期?
- r - 使用循环或 `purrr::map()` 将重新排列的数据帧打印到屏幕
- ruby-on-rails - Ruby:如何在 ruby 中生成唯一的字母字符串