我使用的是高级datagridview,要使用它附带的过滤器,您需要使用绑定源。我正在编写一个oracle查询(实际上是其中的几个),并将结果用作数据源。我似乎无法使它正常工作。我在google上搜索了所有的解决方案,都试过了,但都没有成功。
我的代码:
public partial class frmMain : Form
{
private string sql;
public DataGridView DVG = new DataGridView();
public BindingSource bs = new BindingSource();
private static string connectionString = "User Id=;Password=;" +
"Data Source=:1521/;Pooling=false;";
private void cmdtb1pg1_Click(object sender, EventArgs e)
{
// Get Analysis
sql = "SELECT DISTINCT NAME FROM LWPROD.ANALYSIS ORDER BY 1";
bs.DataSource = GetData(sql, dgAnalysis);
dgAnalysis.ClearSelection();
}
private BindingSource GetData(string sql, DataGridView DGV)
{
DataTable table = new DataTable();
OracleConnection con = new OracleConnection(connectionString);
BindingSource bs = new BindingSource();
try
{
DataSet ds = new DataSet();
OracleCommand cmd = new OracleCommand();
con.Open();
OracleDataAdapter da = new OracleDataAdapter();
da.Fill(ds, connectionString);
bs.DataSource = da;
return bs;
}
catch
{
return bs;
}
finally
{
var name = DGV.Name;
switch (name)
{
case "dgAnalysis":
dgAnalysis.DataSource = bs;
break;
case "dgComponents":
dgComponents.DataSource = bs;
break;
}
}
}
2条答案
按热度按时间ac1kyiln1#
下面是一些更新的代码。这仍然不起作用。在这次尝试中。
pzfprimi2#
我有一部分工作要做,我可以将值放入dganalysis,过滤它们,并使用作为第二个查询的参数。在运行第二个查询之后,第一个datagridview将包含3列而不是一列。第二个datagrid视图将包含3行而不是2行,并且查询的解析没有填充第二个查询。
第一次跑步:第一次跑步
第二轮:第二轮
以下是更新的代码:
我不知道如何清除数据源和数据网格?我有tried:clearing the bindingsource并重置datagridview的数据源。