我这样做:
List<string> list = new List<string>();
while (myReader.Read())
{
reporttime = (string)myReader["reporttime"];
datapath = (string)myReader["datapath"];
list.Add(reporttime,datapath);
}
chart1.DataSource = list;
我不确定我应该如何帮助list.Add
以便能够执行以下操作:
chart1.Series["Series1"].XValueMember = "reporttime";
chart1.Series["Series1"].YValueMembers = "datapath";
问题:我应该如何将这些项目添加到列表中?
答案 0 :(得分:2)
它可能只是通过
工作chart1.DataSource = myReader;
chart1.Series["Series1"].XValueMember = "reporttime";
chart1.Series["Series1"].YValueMembers = "datapath";
chart1.DataBind();
,正如文档所说,图表可以从数据读取器绑定:
以下是可用作数据源的对象列表:
数据视图
数据读取器(SQL,OleDB)
的数据集
数据表
[...]
答案 1 :(得分:2)
还有其他好的答案,但由于你的评论询问如何使用DataTable,我还是会发布这个。此外,我没有看到这些答案如何让您指定值成员,因为我看到的代码示例需要一个命名项,而强者列表不会这样做。 (见@ Dan的帖子)。
而不是使用DataReader并使用while(reader.Read())
使用DataAdapter填充数据表。 (假设数据库是SQL Server,您使用SQLDataAdapter,但有不同的DataAdapter。
string connectionstring = "Some connection sting";
string sql = "Select reporttime, datapath from sometable";
System.Data.DataTable t = new System.Data.DataTable();
System.Data.SqlClient.SqlDataAdapter ad = new System.Data.SqlClient.SqlDataAdapter(sql, connectionstring);
ad.Fill(t);
chart1.DataSource = t;
chart1.Series["Series1"].XValueMember = "reporttime";
chart1.Series["Series1"].YValueMembers = "datapath";
答案 2 :(得分:1)
List.Add仅适用于一个项目。要添加多个项目,您需要AddRange:
list.AddRange(new[] { reporttime,datapath,finalconc,DBinstrument } );
但是,如果你绑定到这个,听起来你想要一个对象列表,而不是字符串...所以更像是
List<object> list = new List<object>();
while (myReader.Read())
{
reporttime = (string)myReader["reporttime"];
datapath = (string)myReader["datapath"];
list.Add(new {
reporttime = (string)myReader["reporttime"],
datapath = (string)myReader["datapath"]
finalconc = "something",
DBinstrument = "somethingelse?"
});
}
chart1.DataSource = list;
注意,我建议在实践中为此创建一个业务对象,而不是使用匿名的。