c# - 需要用绑定源设置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;
}
}
}
解决方案
这是一些更新的代码。这仍然行不通。在这次尝试中。
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;
}
}
} `
推荐阅读
- firebase - 使用 cloud_firestore 和 firebase_core 解决 Flutter 版本失败
- python - 从本地读取 plotly-latest.min.js
- javascript - 数组删除最后一个元素而不是删除的一个反应 useState
- laravel - 在单个路由中使用名称属性设置 Throttle 属性
- laravel - 页面未找到 404 Laravel
- arrays - 如何使用辅助函数来填充用户输入大小的数组?
- javascript - 如何将单击事件处理程序添加到从 javascript 创建的 userChat 类
- timer - 如何在 PIC16F1827 上同步两个定时器
- kotlin-multiplatform - 为什么我不能在 Windows 上使用 KMM 插件运行 iOS 项目?
- dart - 在函数调用中使用 int 作为 num