2016-10-05 6 views
0

以前の同僚からプロジェクトを引き継いで、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を見ていますデータの検索とデータの返送を行いますが、有用な方法ではありません。

私は間違っていますか?

+0

*便利な方法ではありません*はどういう意味ですか? – Drew

+1

1つの列に2つのゼロをロードします。このテーブルには、この時点で入力された複数の文字列と日付があります。 –

+1

ジョブに適切なツールを使用すると、DateGridViewのデータソースとしてデータテーブルを使用するほうが簡単です。 1つのコードのように、データをコピーしません – Plutonix

答えて

0

これは私が思いついたことですが、私はまだ私の問題を解決するために学んでいます。 DatagridViewは、選択されたイベントがロードされたときに発生し、フォームの必要性のために発生しなかったため、私のためには機能しませんでした。

私のソリューション:

private void GetMetrics() 
    { 
     string[] array = new string[11]; 
     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); 
     foreach (DataRow row in (RRCStoredProcedures.GetDataSPT4("spGetDailyMetrics", Parameters)).Rows) 
     { 
      for (int item = 0; item < row.ItemArray.Count(); item++) 
      { 
       array[item] = row.ItemArray[item].ToString(); 
      } 

      ListViewItem thing = new ListViewItem 
       (new[] { array[0], array[1], array[2], array[3], array[4], array[5], array[6], array[7], array[8], array[9], array[10] }); 
      Metricslstvw.Items.Insert(0, thing); 
      Array.Clear(array, 0, 10); 
     } 
     foreach(ColumnHeader ch in Metricslstvw.Columns) { ch.Width = -2; } 


    } 

のDataRowがItemArrayを公開しているので、私はちょうど配列に私が使用する方法を知っていることを巻か。

関連する問題