首页 > 解决方案 > 需要用绑定源设置datagridview数据源

问题描述

我正在使用高级 datagridview 并使用它附带的过滤器,您需要使用绑定源。我正在编写一个 Oracle 查询(实际上是其中的几个)并将结果用作数据源。我似乎无法让它正常工作。我已经用谷歌搜索了所有解决方案,并尝试了所有解决方案,但均未成功。

我的代码:

 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;                        
            }           
        }            
    }      

标签: c#sqloracledatagridviewdatasource

解决方案


这是一些更新的代码。这仍然行不通。在这次尝试中。

1.    ` bs.DataSource = GetData(sql, dgAnalysis);` is stating that cannot implicitly convert type void to object.

2.     ` bs = new BindingSource(ds, DGV); ` is stating that Argument 2 cannot convert from ADGV,AdvancedDataGridView to string. DGV is a variable that contains the name of the datagridview being worked with. See 1. it's working with dgAnalysis, later it's working with dgComponents. I have multiple other datagridview to fill.


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  void GetData(string sql, AdvancedDataGridView DGV)
    {       
        OracleConnection con = new OracleConnection(connectionString);           
        OracleDataAdapter table = new OracleDataAdapter();
        try
        {
            DataSet ds = new DataSet();
            OracleCommand cmd = new OracleCommand();
            con.Open();
            OracleDataAdapter da = new OracleDataAdapter();
            bs = new BindingSource(ds, DGV);              
        }
        catch
        {                
        }
        finally
        {
            var name = DGV.Name;
            switch (name)
            {
                case "dgAnalysis":
                    dgAnalysis.DataSource = bs; 
                    break;
                case "dgComponents":
                    dgComponents.DataSource = bs;   
                    break;                        
            }           
        }            
    }      `

推荐阅读