我制作了一个项目,需要运行查询并将该答案以列表的形式发送到Datagrid中。
这是我的代码: 主要:
public UserControlDetails(string Id)
{
InitializeComponent();
var db = new Database();
var QueriAnswer = db.GetArtikel(Id);
DGVoedingswaarden.ItemsSource = QueriAnswer;
}
db.GetArtikel(Id):
public Idophalen GetArtikel(string id)
{
using (var conn = new MySqlConnection(ConnectionString))
{
conn.Open();
var query = "SELECT naam FROM tb_product WHERE Id = '" + id + "'";
var SelectArtikel = new MySqlCommand(query, conn);
var reader = SelectArtikel.ExecuteReader();
while (reader.Read())
{
var Id = reader.GetString(0);
var artikel = new Idophalen(Id);
return artikel;
}
}
return null;
}
Idophalen(英语:GetId)
public class Idophalen
{
public string Id { get; set; }
public Idophalen(string Id)
{
this.Id = Id;
}
public override string ToString()
{
return string.Format("{0}", Id);
}
}
所以问题是代码({DGVoedingswaarden.ItemsSource = QueriAnswer;
错误:Cannot implicitly convert type 'XXXX.Classes.Idophalen' to 'System.Collections.IEnumerable'.
给出了。所以我不知道如何解决这个问题或它的含义。Stackoverflow上的其他帖子对我没有帮助所以这是我的情况。
如果您需要更多说明,请发表评论
答案 0 :(得分:0)
您的GetArtikel
方法返回一个Idophalen
。 ItemsSource
的{{1}}属性只能设置为ItemsControl
之类的IEnumerable
。因此,您可以创建一个仅包含从数据库返回的单个对象的列表:
List<Idophalen>
答案 1 :(得分:-1)
ItemsSource属性仅接受IEnumerable。 GetArtikel()
返回一个Idophalen
,它不是IEnumerable实例。
您可以创建一个列表并将结果添加到列表中,但这确实不是一个好的解决方案。您应该重新考虑您的尝试是合理的。
无论如何,这应该可以使它工作:
var QueriAnswer = db.GetArtikel(Id);
DGVoedingswaarden.ItemsSource = new List<Idophalen>() { QueriAnswer };