如何使用dataGridView

时间:2015-07-29 11:52:00

标签: c# winforms datagridview

我正在读取XML数据库并将条目存储在dataSet中。 对于UI,我使用的是dataGridView。因此,我的所有数据库条目都将显示在dataGridView中。目前,如果数据库中有两个条目,则显示两个条目的网格,所有其他行显示为空白。 我想用dataGridView显示全屏网格。如果我在数据库中有两个条目,我sholuld看到两个条目和所有其他行/列与空单元格但网格。 datagridView的任何部分都不应为空。请帮助解决问题。 我尝试使用dataGridView的Dock,AutoSizeColumnsMode,AutoSizeRowsMo​​de等属性,但无法实现此目的。

这是读取数据的代码。

private System.Windows.Forms.DataGridView dataGridView1;
DataSet ds = new DataSet();
DataTable dtAll = new DataTable();
XmlReader xmlFile; 
xmlFile = XmlReader.Create("Filepath");
ds.ReadXml(xmlFile);
dtTable = ds.Tables[0].Copy();
dataGridView1.DataSource = ds.Tables["entry"];

3 个答案:

答案 0 :(得分:0)

使用from,放置网格。 表格应该没有边框并且最大化。 这将全屏显示您的表单。

this.BorderStyle = BorderStyle.None;
this.WindowState = FormWindowState.Maximized;

答案 1 :(得分:0)

您可以检查网格一次显示的行数, 例如,如果它支持20行显示滚动而你只有5行,那么你必须在表ds.Tables [“entry”]中添加15行。

答案 2 :(得分:0)

通过Manoj Extreme取消建议,您可以使用虚拟行填充来源DataTable以填充DataGridView的高度。对于宽度,只需将AutoSizeColumnsMode设置为Fill,或者更具体地说,仅为包含最大数据的列设置AutoSizeMode。例如:

DataTable dt = ds.Tables["entry"];

while (dt.Rows.Count * dataGridView1.RowTemplate.Height + dataGridView1.ColumnHeadersHeight < dataGridView1.Height)
{
    dt.Rows.Add(string.Empty);
}

dataGridView1.DataSource = dt;
dataGridView1.Columns["TheBigDataColumnName"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;

注意:此方法存在缺点。如果您允许用户更改行的高度,增加Form的高度或删除行,那么您将不得不执行类似的操作来修复生成的非填充空间。