How to bind a DataGridView to a DataSet without a database?

  • Thread starter Thread starter bill
  • Start date Start date
B

bill

All,

Where can I find some sample code for binding a DataGridView to a
dataset without having the dataset attached to a database?

TIA,

Bill
 
A DataSet is just a representation of an in-memory data cache. The data
could come from anywhere. DataSet supports XML files directly and usually
DataAdapters are uses to fill the DataSet via a database connection. You can
manually create a DataSet by adding DataTable objects to the
DataTableCollection property "Tables". For an example of creating a DataSet
without using an XML file or populating via a database connection see
http://msdn2.microsoft.com/en-us/library/aeskbwf7.aspx

Binding that DataSet to the DataGridView would be the same as if the DataSet
was populate via a database connection and a DataAdapter.
 
Peter,

The following code results in nothing appearing in the DataGridView:

BindingSource bs = new BindingSource();
private void initDataGridView(DataGridView dgv)
{
// dsForDGV is a datset object on the form

dsForDGV.Tables[0].Rows.Add("abc");
dsForDGV.Tables[0].Rows[0][0] = 1234;
bs.DataSource = dsForDGV;
bs.DataMember = dsForDGV.Tables[0].TableName;
dgv.DataSource = bs;
dgv.Refresh();
}

What am I doing wrong? When the form opens the DataGridView control has
the correct number of rows and columns, but they are all blank.

Bill
 
Have you added a DataTable to your DataSet that contains a string
column? The code below worked OK for me in a simple sample.

Clay Burch
Syncfusion, Inc.

DataSet dsForDGV = new DataSet();
BindingSource bs = new BindingSource();
private void Form1_Load(object sender, EventArgs e)
{
DataTable dataTable1 = new DataTable("MyTable");
dataTable1.Columns.Add(new DataColumn("Col0"));
dsForDGV.Tables.Add(dataTable1);

initDataGridView(this.dataGridView1);
}

private void initDataGridView(DataGridView dgv)
{
dsForDGV.Tables[0].Rows.Add("abc");
dsForDGV.Tables[0].Rows[0][0] = 1234;
bs.DataSource = dsForDGV;
bs.DataMember = dsForDGV.Tables[0].TableName;
dgv.DataSource = bs;
dgv.Refresh();
}
 
Bill,

Make sure the DataPropertyName is set correctly for the columns is set
correctly so that the mapping is made corerctly between the Data Source
and the DatagridView

Krishnen
 
Back
Top