WPF DataGrid绑定MS Access表仅显示列头无法加载数据求助
问题原因
你漏了调用表适配器的Fill方法把Access数据库的实际数据加载到DataSet的对应表中。设计器预览时工具会自动调用填充逻辑,但运行时需要你手动执行这一步,所以你当前LINQ查询的是内存里的空表,返回结果没有数据,DataGrid只会根据投影的匿名类型属性生成列头,没有实际行数据展示。
修复方案
- 先找到你创建强类型DataSet时自动生成的
PROCESS_SCHEDULES表对应的TableAdapter类 - 在执行LINQ查询前,先实例化TableAdapter并调用
Fill方法填充DataSet - 原有的查询和绑定逻辑保持不变即可
修复后的完整代码示例:
// 替换YourDataSetName为你实际的数据集类名 var scheduleAdapter = new YourDataSetNameTableAdapters.PROCESS_SCHEDULESTableAdapter(); // 填充数据到DataSet的PROCESS_SCHEDULES表 scheduleAdapter.Fill(dataSet.PROCESS_SCHEDULES); // 原有逻辑不变 var query = from ps in dataSet.PROCESS_SCHEDULES orderby ps.SCHEDULE_NAME select new { ps.SCHEDULE_NAME, ps.PROCESS_NAME, ps.DAY_OF_MONTH, ps.DAY_OF_WEEK, ps.START_TIME, ps.END_TIME, ps.STATUS, ps.STATUS_TM, ps.PARALLEL, ps.MINUTES_BEFORE_REPEAT, ps.ENABLED, ps.ERR_NUM }; processScheduleGrid.ItemsSource = query.ToList();
可选优化
如果你不需要过滤字段,也可以直接绑定DataView,代码更简洁:
var scheduleAdapter = new YourDataSetNameTableAdapters.PROCESS_SCHEDULESTableAdapter(); scheduleAdapter.Fill(dataSet.PROCESS_SCHEDULES); processScheduleGrid.ItemsSource = dataSet.PROCESS_SCHEDULES.DefaultView;
内容的提问来源于stack exchange,提问作者Matthew Swaringen
相关产品推荐
相关产品推荐

