C#读取二进制文件后DataGridView仅显示单个卖家数据问题
问题解决:DataGridView仅显示单个卖家数据
问题根源
你的代码存在两个关键问题导致仅显示一条数据:
- 循环内重复绑定数据源:每次添加一个卖家就执行
dgvViewsäljare.DataSource = säljare;,频繁的重复绑定会干扰DataGridView的渲染逻辑,最终只保留最后一次绑定的视觉效果。 - 未清空绑定集合:仅清空DataGridView的行,而绑定的
säljare集合未清空(如果之前有残留数据,还会导致数据叠加)。
修正后的代码
private void btn_öppna_Click(object sender, EventArgs e) { DialogResult resultat = dlgÖppnaFil.ShowDialog(); if (resultat == DialogResult.OK) { // 清空绑定集合,确保加载新数据前无残留 säljare.Clear(); // 使用using自动释放文件资源,避免手动Dispose的疏漏 using (FileStream inStröm = new FileStream(dlgÖppnaFil.FileName, FileMode.Open, FileAccess.Read)) using (BinaryReader läsare = new BinaryReader(inStröm)) { int antalSäljare = läsare.ReadInt32(); for (int i = 0; i < antalSäljare; i++) { string namn = läsare.ReadString(); double personnr = läsare.ReadDouble(); string distrikt = läsare.ReadString(); int antal = läsare.ReadInt32(); int nivå = läsare.ReadInt32(); Säljare nySäljare = new Säljare(namn, personnr, distrikt, antal, nivå); säljare.Add(nySäljare); } } // 所有数据加载完成后,统一绑定数据源 // 先设为null再绑定,解决List集合绑定的刷新问题 dgvViewsäljare.DataSource = null; dgvViewsäljare.DataSource = säljare; } }
额外优化建议
如果需要后续动态添加/删除卖家时,DataGridView自动更新显示,可以将säljare的类型从List<Säljare>改为BindingList<Säljare>,这类集合自带变更通知机制,无需手动重新绑定数据源。
内容的提问来源于stack exchange,提问作者LOTUS
相关产品推荐
相关产品推荐

