0

私はすでに SQLite データベースをセットアップしています。今、私はそれを解析しています。たとえば、列 Seq の特定の値が >30 の場合、それらの値をリストに転送します。そのリストを使用してデータグリッド ビューにデータを入力し、ユーザーが 30 を超える値を確認できるようにしたい

データ グリッド ビューに複数のリストを表示するにはどうすればよいですか? 基本的に、列 1 は list1、列 2、リスト 2 などになります。

編集:代わりにリストビューを使用する必要があると思う人はいますか? もしそうなら、どのように?

リストの値を取得するための解析コードを次に示します。ここで、何らかの方法で DGV にこれらのリストを入力する必要があります。

  string sql4 = "select * from abc";
       SQLiteCommand command = new SQLiteCommand(sql4, sqlite_conn);

       // The datareader allows us to read the table abc row by row
       SQLiteDataReader reader = command.ExecuteReader();

       // What happens next: We are trying to parse each column for irregularities to show to the user. For example if a value in column
       // Seq is >30, we need to let the user know. We do this by adding all values >30 to the SeqIrregularities list. 

       while (reader.Read())
       {
           int seq;
           if (int.TryParse(reader["Seq"].ToString(), out seq))
               if (seq > 30)
               {

                   SeqIrregularities.Add(seq);
                   seq1 = true;
               }
           int maxlen;
           if (int.TryParse(reader["MaxLen"].ToString(), out maxlen))
               if (maxlen> 30.00)
               {

                   MaxLen.Add(maxlen);
                   maxlen1 = true;
               }



       }
4

2 に答える 2

1

複数のリストを取得し、カスタム オブジェクトまたはデータ テーブルのいずれかに入力するアダプター クラスを作成します。次に、そのオブジェクトをデータソースとしてグリッドにバインドできます。

public DataTable ConvertListsToDatatable(List<int> list1, List<int> list2)
{
    DataTable dt = new DataTable();

    DataColumn column;
    DataRow row;

    // add the first column
    column = new DataColumn();
    column.DataType = System.Type.GetType("System.Int32");
    column.ColumnName = "List1Id";
    dt.Columns.Add(column);

    // add the second column
    column = new DataColumn();
    column.DataType = System.Type.GetType("System.Int32");
    column.ColumnName = "List2Id";
    dt.Columns.Add(column);

    int i = 0;
    while ((list1 != null)&&(i < list1.Count) || (list2 != null)&&(i < list2.Count))
    {
        row = dt.NewRow();

        if (list1 != null)
        {
            if (i < list1.Count)
            {
                row["List1Id"] = List1[i];
            }
        }

        if (list2 != null)
        {
            if (i < list2.Count)
            {
                row["List2Id"] = List2[i];
            }
        }

        dt.Rows.Add(row);
        i++;
    }

    return dt;
}
于 2013-11-14T16:11:59.803 に答える
0

そもそもリストをわざわざ作る必要はありません。テーブルを直接ロードするだけです。

  DataTable myData = new DataTable();
  DataColumn seqCol = new DataColumn("Seq", typeof (int));
  DataColumn maxLenCol = new DataColumn("MaxLen", typeof (int));
  myData.Columns.Add(seqCol);
  myData.Columns.Add(maxLenCol);

  while (reader.Read())
  {
    var row = myData.NewRow();
    bool addRow = false;
    int seq;
    if (int.TryParse(reader["Seq"].ToString(), out seq))
      if (seq > 30)
      {
        row[seqCol] = seq;
        addRow = true;
      }
    int maxlen;
    if (int.TryParse(reader["MaxLen"].ToString(), out maxlen))
      if (maxlen > 30.00)
      {
        row[maxLenCol] = maxlen;
        addRow = true;
      }
    if (addRow)
    {
      myData.Rows.Add(row);
    }
  }

次に、このテーブルをグリッドにバインドします

 DataGridView dgv = new DataGridView();
  dgv.DataSource = myData;
于 2013-11-15T18:21:37.750 に答える