0

私はWPFを学習しようとしており、MySQLデータベースからのデータをWPFDataGridに入力しようとしています。関連するコードは次のとおりです。

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

dataGridは、WPFDataGridコントロールです。myMySQL.DBDataSetはSystem.Data.DataSetです。上記のコードの2行目に次のエラーが表示されます。

「タイプ'System.Data.DataTable'を'System.Collections.IEnumerable'に暗黙的に変換できません。明示的な変換が存在します(キャストがありませんか?)」

はい、おそらくキャストが必要です。明示的な変換が存在すると聞いてうれしいです。しかし、どのキャストが必要かをどのように判断できますか?'(System.Collections.IEnumerable)'は明らかに機能しません。'ItemsSource'のタイプは'System.Windows.Controls.ItemsControl'のようです。ただし、キャスト(System.Windows.Controls.ItemsControl)も機能しません。このエラーを修正するためにこのDataTableをキャストする方法の説明を他にどこで探すべきかわかりません。手伝って頂けますか?

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 に答える