c# - C#为一行信息读取/加载多个图像
问题描述
该应用程序应显示多行信息。每行都有一些基本的字符串信息,以及一些参考图像。在 MySQL 数据库中,我有表 A存储基本信息,表 B存储所有图像路径。问题是,现在即使只有 1 行,Reader 读取 3 次并创建 3 个 UserControl 幻灯片,这不是我想要的。下面的简化代码:
string sql = "SELECT a.id, a.name, b.imgPath FROM a INNER JOIN b ON a.id=b.id";
MySqlCommand cmd = new MySqlCommand(sql, conn);
MySqlDataReader reader = cmd.ExecuteReader();
While(reader.Read())
{
UserControl userControl= new UserControl();
userControl.idLabel = reader.GetInt32("id").Tostring();
userControl.nameLabel = reader.GetString("name");
string imgPath = reader.GetString("imgPath");
Image img = New Image(...);
stackPanel.Children.Add(userControl);
}
如何解决这个问题?非常感谢 !
解决方案
不,它不会返回一行,join
每个连接对会返回一行,因此您将获得与图片一样多的行。解决方案是检查您是否已经为同一行添加了一个控件,在这种情况下检索它并将新图像添加到控件中,否则像您一样创建新控件。
While(reader.Read())
{
string id = reader.GetInt32("id").ToString();
//Check if there is already a userControl for the current item id
UserControl userControl= stackPanel.Children.OfType<UserControl>().Where(uc => uc.idLabel == id).FirstOrDefault();
i( userControl == null)
{
userControl = new UserControl();
userControl.idLabel = id.Tostring();
userControl.nameLabel = reader.GetString("name");
stackPanel.Children.Add(userControl);
}
string imgPath = reader.GetString("imgPath");
Image img = New Image(...);
//Add the new image to your control. You haven't show how you add images to it.
}
推荐阅读
- c# - 在 Web api 控制器中读取的 SQL Server 存储过程数据
- python - Pandas 过滤多个条件
- java - 仅匹配正则表达式中第一次出现的字符
- java - 减轻多态性中的参数,因为孩子需要不同的参数
- java - 连接到 Azurite 时验证失败
- mysql - 当 IFNULL() 与 IS NULL 的性能不同时如何调整我的 MYSQL 数据库
- subprocess - 如果python在之后立即退出,则子进程Popen无法执行
- android - 当我点击通知时,为什么不直接指向我想去的地方?
- python - 如何更改不同索引中的每个嵌套列表?
- php - 有没有办法在 PHP Fat Free Framework 上为 IN 条件清理数组?