How should I cast a DataTable for assignment to DataGrid.ItemsSource?

淺唱寂寞╮ 提交于 2019-12-02 19:53:05

问题


I am trying to learn WPF, and trying to populate a WPF DataGrid with data from a MySQL database. The relevant code is:

        dataGrid.DataContext = myMySQL.DBDataSet;
        dataGrid.ItemsSource = myMySQL.DBDataSet.Tables[tblName];

dataGrid is a WPF DataGrid control. myMySQL.DBDataSet is a System.Data.DataSet. I get the following error on the second line of code above.

"Cannot implicitly convert type 'System.Data.DataTable' to 'System.Collections.IEnumerable'. An explicit conversion exists (are you missing a cast?)"

Yes, I probably need a cast. I am glad to hear that an explicit conversion exists. But how do I determine what cast I need? '(System.Collections.IEnumerable)' obviously doesn't work. The type of 'ItemsSource' seems to be 'System.Windows.Controls.ItemsControl'. But cast (System.Windows.Controls.ItemsControl) doesn't work either. I have no idea where else to look for an explanation of how to cast this DataTable to correct this error. Can you help me?


回答1:


Try assign DefaultView of DataTable to ItemsSource.

dataGrid.ItemsSource = myMySQL.DBDataSet.Tables[tblName].DefaultView;



回答2:


private DataTable GetNewStaffCode()
       {
           Mod_Staff stafmodules = new Mod_Staff();
           staffcode = txtStaffCode.Text.ToString();
           DataTable dtstaffcode=stafmodules.GetNewStaffCode(staffcode);
           for (int j = 0; j < dtstaffcode.Rows.Count; j++)
           {
               staffcode ="ST"+ Convert.ToString(j);
           }

The Error Message are:

Cannot implicitly convert type 'System.Data.DataTable' to 'string'

And

Real_Estate_Management_System.StaffEntry.GetNewStaffCode()': not all code paths return a value D:\Shwe Ain Real Estate Management\Real Estate Management By May Mee Tun\Real_Estate_App\Real_Estate_Management_System\Real_Estate_Management_System\UI\StaffEntry.cs 329 30 Real_Estate_Management_System

           txtStaffCode.Refresh();
       }

public DataTable GetNewStaffCode(string staffcode)
    {
        String query = "Select staff_code from tblStaffType";
        if (CN.State == ConnectionState.Closed) CN.Open();
        SqlCommand cmd = new SqlCommand(query, CN);
        DataTable dt = new DataTable();
        SqlDataAdapter adp = new SqlDataAdapter(cmd);
        adp.Fill(dt);
        return dt;
    }


来源:https://stackoverflow.com/questions/11655384/how-should-i-cast-a-datatable-for-assignment-to-datagrid-itemssource

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!