如何在windows窗体中显示数据集
本文关键字:显示 数据集 窗体 windows | 更新日期: 2023-09-27 17:52:45
我的应用程序接受任何数据库作为其输入,然后检测该数据库中的表,然后将所有表填充到DataSet中。现在数据集中有了数据库的图像。现在我的问题是如何将这个数据集显示为windows形式。
DataSet是动态的,因为每次它都会有n个表,每个表可以有任意数量的行和任意数量的列。
请根据上下文阅读这个问题。使用c#和Ado.net比较数据库(仅限表)
显示表的最佳方式是使用DataGridView(从现在开始的DGV)。问题是dgv能够显示一个表,而且只有一个。
那你怎么做呢?您需要有多个DGV(数据集的每个表一个)或以某种方式更改DGV显示的表。
假设你决定有多个DGV。我不会介绍如何动态地将它们添加到表单中,如果你想知道,问它,我会编辑答案。
为数据集上的每个表创建一个DGV:
List<DataGridView> DGVs = new List<DataGridView>();
foreach (DataTable DT in DS.Tables){
DataGridView DGV = new DataGridView();
DGV.DataSource=DT;
DGVs.Add(DGV);
//Add code for adding them to the form
}
现在数据集中的每个表都有一个DataGridView。
如果你想要一个DGV,并且能够选择你想要显示的表,请告诉我
如何动态添加控件
您需要决定如何添加它们,在这种情况下,它将在另一个下面。
要使它们可见,你需要:
- 添加到父控件
- 定位他们
添加父控件很简单:
form1.Contols.Add(DGV)
定位它们有点棘手,因为您希望它们中的每一个位于不同的位置,但相对于前一个。要做到这一点,你需要创建一个Point
,然后将其向下移动X像素。所以:
Point p = new Point(0,0); //Position of the first DGV, choose the one you want
p.Y += DGV.Height + 10; //Margin that you want
然后将DGV位置设置为
DGV.Location = p;
然后只需要显示DGV
DGV.Show();
你可以在每个循环中都这样做,它将是这样的:
List<DataGridView> DGVs = new List<DataGridView>();
Point p = new Point(0,0); //Position of the first DGV, choose the one you want
foreach (DataTable DT in DS.Tables){
DataGridView DGV = new DataGridView();
DGV.DataSource=DT;
DGVs.Add(DGV);
p.Y += DGV.Height + 10; //Margin that you want
DGV.Location = p;
this.Controls.Add(DGV);
DGV.Show();
}
请注意,如果您不需要DGV列表(在某些情况下它可能很有用),您可以忽略第一行和DGVs.Add(DGV);
行。