我应该如何转换DataTable以分配给DataGrid.ItemsSource?

时间:2012-07-25 17:35:07

标签: mysql wpf data-binding dataset wpfdatagrid

我正在尝试学习WPF,并尝试使用MySQL数据库中的数据填充WPF DataGrid。相关代码是:

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

dataGrid是一个WPF DataGrid控件。 myMySQL.DBDataSet是一个System.Data.DataSet。我在上面的第二行代码中得到以下错误。

  

“无法将类型'System.Data.DataTable'隐式转换为   'System.Collections.IEnumerable'。存在显式转换(是   你错过了一个演员?)“

是的,我可能需要演员。我很高兴听到存在明确的转换。但是我如何确定我需要什么样的演员? '(System.Collections.IEnumerable)'显然不起作用。 'ItemsSource'的类型似乎是'System.Windows.Controls.ItemsControl'。但是强制转换(System.Windows.Controls.ItemsControl)也不起作用。我不知道在哪里寻找解释如何转换此DataTable来纠正此错误。你能救我吗?

2 个答案:

答案 0 :(得分:1)

尝试将DataTable的DefaultView分配给ItemsSource。

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

答案 1 :(得分: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;
    }