Groups | Blog | Home
all groups > dotnet windows forms > december 2006 >

dotnet windows forms : How to bind a DataGridView to a DataSet without a database?



bill
12/26/2006 11:37:00 AM
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
Peter Ritchie [C# MVP]
12/26/2006 6:50:01 PM
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.

--
Browse http://connect.microsoft.com/VisualStudio/feedback/ and vote.
http://www.peterRitchie.com/blog/
Microsoft MVP, Visual Developer - Visual C#


[quoted text, click to view]
bill
12/27/2006 4:41:28 AM
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


[quoted text, click to view]
ClayB
12/27/2006 6:32:42 AM
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();
}
krishnen
12/27/2006 6:35:40 AM
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
AddThis Social Bookmark Button