c#如何将字符串添加到列表中,以便可以从DataSource访问它们

时间:2010-11-04 17:24:49

标签: c# .net

我这样做:

    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";

问题:我应该如何将这些项目添加到列表中?

3 个答案:

答案 0 :(得分:2)

它可能只是通过

工作
chart1.DataSource = myReader;
chart1.Series["Series1"].XValueMember = "reporttime";
chart1.Series["Series1"].YValueMembers = "datapath";
chart1.DataBind();

,正如文档所说,图表可以从数据读取器绑定:

http://msdn.microsoft.com/en-us/library/system.web.ui.datavisualization.charting.chart.datasource.aspx

  

以下是可用作数据源的对象列表:

     

数据视图

     

数据读取器(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;

注意,我建议在实践中为此创建一个业务对象,而不是使用匿名的。