我正在尝试在Windows窗体(C#)上创建多个DataGridViews(简称DGV)。我已经简化了一些代码,比如SQL语句,因为那些东西已经有用 - 所以请忽略它。
使用特定输入时,此代码应生成6种不同的DGV;每个都一个接一个地放置。
代码列出了所有的DGV(我认为),但它们是相互叠加的。我找到每个DGV的代码不起作用。 DGV都位于我表格上的点(0,0)。
有人可以帮助指出我的错误吗?
private void getJobSetpoints(int xID)
{
int panelX = 422;
int panelY = 12;
int totalHeight = panelY;
try
{
connection.Open();
var con = new OleDbConnection(connection.ConnectionString);
for (int i = 0; i <= 30; i++)
{
var select = @"SELECT .........";
DataSet ds = new DataSet();
var dataAdapter = new OleDbDataAdapter(select, con);
dataAdapter.SelectCommand.Parameters.Add("@ID", OleDbType.Integer).Value = xID;
dataAdapter.SelectCommand.Parameters.Add("@CATEGORY", OleDbType.Integer).Value = i;
dataAdapter.Fill(ds);
//If data exists then create a DataGridView
if (ds.Tables[0].Rows.Count > 0)
{
DataGridView dgv = new DataGridView();
this.Controls.Add(dgv);
dgv.Location = new Point(panelX, totalHeight + 30);
dgv.Size = new Size(200, 200);
dgv.Dock = DockStyle.Fill;
dgv.Name = "dgv_" + i;
dgv.DataSource = ds.Tables[0];
dgv.Visible = true;
//Adjust the height of the DataGridView
int height = 40;
foreach (DataGridViewRow dr in dgv.Rows)
{
height += dr.Height;
}
dgv.Height = height;
totalHeight += height;
}
else { }
}
}
finally
{
connection.Close();
}
}