我有一个GridView,我将它绑定到一个在运行时填充的DataTable。列数和行数不固定。填充DataTable后,我将GridView的绑定源设置为此数据表:
Me.User_infoDTBindingSource.DataSource = User_infoDT
现在的问题是,网格视图根本没有显示任何列或行。 我用过:
Me.UserListGridView.PopulateColumns(User_infoDT)
现在我得到了GridView中的所有列,但是我在DataTable中设置的列标题都丢失了。 GridView中的行仍然为空。我也使用了OptionView.EnableAppearanceEvenRow
所以我可以看到我的GridView中生成了多少行(因为它应该是这样),但我仍然看不到任何数据。
我使用相同的数据源(数据表)与Windows DataGridView和TreeList实现了相同的代码,并且它运行良好。但在这里我找不到任何没有得到行的理由。
知道这些行在哪里?我在将绑定源的数据源设置为数据表时调试了代码并检查了DataTable。那时GridView.DataRowCount和GridView.Columns.Count是正确的。但是网格视图仍未显示行中的任何数据。
更新: 我现在已经删除了绑定源并将GridView的数据源直接设置到DataTable,它运行正常!令我惊讶的是,当我在其间使用绑定源时,行是不可见的。除此之外,现在所有列都有正确的标题(我在DataTable中设置),当我使用绑定源时,这些标题会丢失。
答案 0 :(得分:1)
试试这个
using System;
using System.Data;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
DataTable table = new DataTable();
BindingSource bind = new BindingSource();
public Form1()
{
InitializeComponent();
table.Columns.Add(new DataColumn("Name", typeof(string)));
table.Columns.Add(new DataColumn("Value", typeof(Int32)));
bind.DataSource = table;
dataGridView1.DataSource = bind;
}
private void button1_Click(object sender, EventArgs e)
{
table.Columns.Add(new DataColumn("Check", typeof(bool)));
}
}
}
答案 1 :(得分:0)
我得到了答案。我添加了以下几行:
Me.UserListGridView.Columns.Clear()
Me.UserListGridView.OptionsBehavior.AutoPopulateColumns = True
Me.User_infoDTBindingSource.DataSource = _user_info.User_infoDT
Me.User_infoDTBindingSource.RaiseListChangedEvents = True
Me.User_infoDTBindingSource.ResetBindings(True)
设置数据源后,提升列表已更改事件并重置绑定解决了问题。