0
votes

I have a GridView and I am binding it to a DataTable which is being filled at run time. Number of columns and rows are not fixed. After the DataTable is filled I am setting the binding source of the GridView to this data table:

 Me.User_infoDTBindingSource.DataSource = User_infoDT

Now the prblem is, gird view is not showing any columns or rows at all. I used :

Me.UserListGridView.PopulateColumns(User_infoDT)

Now I am getting all the columns in the GridView but the column captions which I setted in DataTable are all lost. The rows ar still empty in the GridView. I have also used OptionView.EnableAppearanceEvenRow so I can see that number of rows are generating in my GridView (as it is supposed to be) but still I can't see any data.

I have implemented the same code with Windows DataGridView and TreeList using the same data source (data table) and it is working perfectly. But here I can not find any reason of not getting the rows.

Any idea where are these rows? I debugged the code and checked the DataTable when I am setting the binding source's data source to data table. At that time GridView.DataRowCount and GridView.Columns.Count are correct. But still grid view is not showing any data in the rows.

UPDATE: I have now removed the binding source and setted the GridView's datasource directly to the DataTable and it is working perfectly!! I am amazed why the rows are invisble when I am using a binding source in between. Apart from this, here now all the columns have correct captions also (which I setted in DataTable) which are being lost when I am using binding source.

2
Did you try setting the autogeneratecolumns = true - Mohamed
I have devexpress GridView. I just tried with autogeneratecolumns replacement here Me.UserListGridView.OptionsBehavior.AutoPopulateColumns = True . Still the same behaviour. No data in the rows. Rows are generating but the data is still not visible. - IFlyHigh
pull out a winforms datagridview from tool box and try to set the datasource for that grid and check if it loads the data - Mohamed
if that works use BindingSource to bind devexpress grid - Mohamed
Yes it is working with winforms GridView! I have used binding source only. Check in my question. GirdView's data source is User_infoDTBindingSource. - IFlyHigh

2 Answers

1
votes

Try this

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

Well I got the answer. I added following lines:

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)

After setting the datasource, raising the list changed events and resetting binding resolved the issue.