2014-10-27 7 views
0

У меня есть GridView, и я привязываю его к DataTable, который заполняется во время выполнения. Количество столбцов и строк не фиксировано. После того, как DataTable заполнен я устанавливаю связывания источника GridView в этой таблице данных:Связывание GridView с динамическим DataTable

Me.User_infoDTBindingSource.DataSource = User_infoDT 

Теперь prblem есть препоясать вид не показывает каких-либо столбцов или строк вообще. я использовал:

Me.UserListGridView.PopulateColumns(User_infoDT) 

Теперь я получаю все столбцы в GridView, но заголовки столбцов, которые я выставиться в DataTable все потеряно. Строки ar все еще пусты в GridView. Я также использовал OptionView.EnableAppearanceEvenRow, поэтому я вижу, что в моем GridView (как и должно быть) генерируется столько строк, но все же я не вижу никаких данных.

Я реализовал тот же код с Windows DataGridView и TreeList, используя тот же источник данных (таблица данных), и он отлично работает. Но здесь я не могу найти причины не получать строки.

Любая идея, где эти строки? Я отлаживал код и проверял DataTable, когда я устанавливаю источник данных источника привязки в таблицу данных. В то время GridView.DataRowCount и GridView.Columns.Count верны. Но все же сетка не показывает никаких данных в строках.

UPDATE: Я удалил источник привязки и установил источник данных GridView непосредственно в DataTable, и он отлично работает! Я удивлен, почему строки являются невидимыми, когда я использую источник привязки между ними. Кроме того, здесь теперь все столбцы также имеют правильные подписи (которые я установил в DataTable), которые теряются, когда я использую источник привязки.

+0

Пробовал ли вы устанавливать автогенераторы? = True – Mohamed

+0

У меня есть девекспресс GridView. Я просто попытался с заменой автогенераторов заменить здесь Me.UserListGridView.OptionsBehavior.AutoPopulateColumns = True. Все-таки такое же поведение. Нет данных в строках. Строки генерируются, но данные все еще не видны. – IFlyHigh

+0

вытащите winforms datagridview из окна инструментов и попытайтесь установить источник данных для этой сетки и проверьте, загружает ли он данные – Mohamed

ответ

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) 

После установки источника данных, поднимая список событий изменился и сброса привязки решить эту проблему.

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))); 
    } 
    } 
}