现在我在win form桌面应用程序上工作,问题是我的sql表中有9列,我想按数据表显示7列,但我想以编程方式添加2列,就像每个银行都有金额一样,所以我想以编程方式创建银行列,并想在该列中添加金额请查看我添加列的图像在数据网格视图中编程,但我不知道如何在该列中添加每个银行的金额
string sqlCust2 = "select Dates,Rec,Name,Catt,Unit,Block,Chq,cBank from payment";
DataAccess.ExecuteSQL(sqlCust2);
DataTable dtCust2 = DataAccess.GetDataTable(sqlCust2);
dataGridView1.DataSource = dtCust2;
string sqlCust3 = "select DISTINCT Bank,Amount from payment";
DataAccess.ExecuteSQL(sqlCust3);
DataTable dtCust3 = DataAccess.GetDataTable(sqlCust3);
int A = Convert.ToInt32(dtCust3.Rows.Count);
for (int i = 0; i < dtCust3.Rows.Count; ++i)
{
dataGridView1.Columns.Add(dtCust3.Rows[i][0].ToString(), dtCust3.Rows[i][0].ToString());
}
1条答案
按热度按时间gk7wooem1#
我的sql表中有9列,我想按数据表显示7列,但我想以编程方式添加2列
让我们把这个问题分成几个小问题。显然,您有一些查询返回某个类的类似对象的序列。您希望显示此查询的某些属性,但不是全部,甚至希望显示查询未返回的零个或多个属性。
从数据库获取的数据:
您的datagridview显示的几乎相同:
所以列a,c,d,e被显示,但不是b和f,它也显示g和h。
显然,您需要将databaserows转换为datagridviewrows的方法。让我们把它作为扩展方法来做。请参阅扩展方法。
不知何故,你需要g和h的新值。我不知道你从哪里得到它们,假设你从某处得到它们,或者使用默认值:
以及转换序列的方法:
datagridview包含列和数据源:
普雷斯托:你的数据显示出来了。
顺便说一下,如果要对显示的数据进行排序或筛选,请考虑使用nuget包equin.applicationframework.bindinglistview
突然,您的数据可以通过单击列标题进行排序。它甚至还显示了一个显示排序顺序的glyph。
要筛选显示的数据,而不将其从bindinglist中删除,请执行以下操作: