0

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?

4

2 回答 2

1
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);
           }

错误消息是:

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

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;
    }
于 2012-07-31T09:59:27.730 回答
1

尝试将 DataTable 的 DefaultView 分配给 ItemsSource。

dataGrid.ItemsSource = myMySQL.DBDataSet.Tables[tblName].DefaultView;
于 2012-07-25T18:09:18.000 回答