【发布时间】:2016-10-05 19:08:25
【问题描述】:
我从一位前同事那里接手了一个项目,我正在尝试从一个从 mysql 数据库中提取的数据表中填充一个列表视图。
这是我用来从 MySQL 中提取的内容:
internal static DataTable GetDataSPT3(string StoredProcedure, Dictionary<string, string> Parameters)
{
DataTable _DT = new DataTable();
MySqlCommand cmd = new MySqlCommand(StoredProcedure, new MySqlConnection(Creds.GetConnectionStringT3()));
cmd.CommandType = CommandType.StoredProcedure;
foreach (KeyValuePair<string, string> Parameter in Parameters)
cmd.Parameters.Add(new MySqlParameter(Parameter.Key, Parameter.Value));
cmd.Connection.Open();
MySqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
_DT.Load(dr);
dr.Close();
return _DT;
}
这是我用来填充列表视图的:
private void GetMetrics()
{
string begin = "2015-05-26 00:00:00";
string end = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
Dictionary<string, string> Parameters = GetParameters();
Parameters.Add("p_daily_metrics_date_Date1", begin);
Parameters.Add("p_daily_metrics_date_Date2", end);
DataTable dt = new DataTable();
foreach (DataRow row in RRCStoredProcedures.GetDataSPT3("spGetDailyMetrics", Parameters).Rows)
{
ListViewItem item = new ListViewItem(row[0].ToString());
for (int i = 0; i < row.Table.Rows.Count;i++)
{
item.SubItems.Add(row[i].ToString());
}
lvMetrics.Items.Add(item);
}
}
观察进程使用断点和 SQL 查找数据并返回数据,但没有任何用处。
我做错了什么?
【问题讨论】:
-
但没有任何用处是什么意思?
-
它将 2 个零加载到单个列中,就是这样。该表此时输入了几个字符串和日期。
-
当您使用正确的工具完成工作时,生活会更简单,使用数据表作为 DateGridView 的数据源。一种类似代码,无需复制数据
-
@ChrisIverson,您可以手动编码并填充 DataTable _DT - GetDataSPT3 的输出吗?并通过ListView显示你想要的显示?这可能使我能够帮助你。我怀疑对于添加子项,for 循环应该是
for (int i = 1; i < row.Table.Columns.Count; i++)。这是因为 row[0] - 第一列被添加为项目;因此,SubItems 表示同一行的另一列。 -
@Rupesh,这就是我最终解决的方法。
标签: c# mysql winforms listview