Advertisement
If you have a new account but are having problems posting or verifying your account, please email us on hello@boards.ie for help. Thanks :)
Hello all! Please ensure that you are posting a new thread or question in the appropriate forum. The Feedback forum is overwhelmed with questions that are having to be moved elsewhere. If you need help to verify your account contact hello@boards.ie
Hi all,
Vanilla are planning an update to the site on April 24th (next Wednesday). It is a major PHP8 update which is expected to boost performance across the site. The site will be down from 7pm and it is expected to take about an hour to complete. We appreciate your patience during the update.
Thanks all.

C#, DataSets & binding to DataGridViews

  • 25-04-2007 2:35pm
    #1
    Registered Users Posts: 14,148 ✭✭✭✭


    Hey Guys,

    I've been working on and off on the Boards.ie Archive reader and have reached a bit of a stumbling block.

    I have a dataset which is populated from a user's pm file (in xml format), and creates two tables in a master/child relationship ('Folder', 'privatemessage'). I have a schema file which creates the relation between the two tables based on the 'folder' row index vs. an added folder index id field in the 'privatemessage' table.

    The folder table contents are displayed by way of a tree-view control, and this is used to select subsets of the dataset to display in a datagridview control.

    I assign the datagridview.datasource the filtered 'privatemessage' rows and running a debug session verifies this.

    My problem is in binding the datagridview columns 'DataPropertyname' values to the 'privatemessage' table column names. I essentially end up with a blank datagridview (with the correct row count, but no content in the cells).

    if I don't filter the dataset and simply just assign the 'privatemessage' table contents to the datagridview.datasource, everything works (ableit not filtered).

    Has anyone experienced issues like this before?

    The offending method is below (well, part of it)
    private void PopulateDataGridView()
    {
    	DataRelation rel;
            int relIndex = -1;
    
    	if (dataSetArchive.Relations.Contains(Properties.Resources.Dataset_Relation))
            {
            	relIndex = dataSetArchive.Tables[Properties.Resources.XML_folder_node].ChildRelations.IndexOf(Properties.Resources.Dataset_Relation);
                    if (relIndex > -1)
                    {
                        rel = dataSetArchive.Relations[relIndex];
                        m_Binding.DataSource = dataSetArchive.Tables[Properties.Resources.XML_folder_node].Rows[m_SelectedIndex].GetChildRows(rel);
                    }
    	}
    
            DataGridViewFolder.DataSource = m_Binding; // m_Binding is a private member 'BindingSource' object
    
            DataGridViewFolder.Columns["clmTitle"].DataPropertyName = "title";
            DataGridViewFolder.Columns["clmDateStamp"].DataPropertyName = "datestamp";                        
            DataGridViewFolder.Columns["clmFromUser"].DataPropertyName = fromuser;
            DataGridViewFolder.Columns["clmToUser"].DataPropertyName = "touser";
    }
    


Advertisement