0

List から dataGridView にデータを入れようとしましたが、問題がありました。

現在、必要なリストを返すメソッドがあります - 下の図を参照してください

コード

    public List<string[]> ReadFromFileBooks()
    {
        List<string> myIdCollection = new List<string>();
        List<string[]> resultColl = new List<string[]>();
        if (chooise == "all")
        {
            if (File.Exists(filePath))
            {
                using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
                {                        
                    StreamReader sr = new StreamReader(fs);
                    string[] line = sr.ReadToEnd().Split(new string[] { Environment.NewLine },
                        StringSplitOptions.RemoveEmptyEntries);
                    foreach (string l in line)
                    {
                        string[] result = l.Split(',');
                        foreach (string element in result)
                        {
                            myIdCollection.Add(element);
                        }
                        resultColl.Add(new string[] { myIdCollection[0], myIdCollection[1], myIdCollection[2], myIdCollection[3] });
                        myIdCollection.Clear();
                    }
                    sr.Close();
                    return resultColl;
                }
            }
     ....

これにより、必要なデータが必要な形式で返されます(配列からのリストなど)。 ここに画像の説明を入力

この後、名前付きの 4 つの列が既にある dataGridView に移動してみてください (4 つ以上の列は必要ないと確信しているため) - 下の図を参照してください。

ここに画像の説明を入力

次のコードを使用して dataGridView にデータを入れてみてください

    private void radioButtonViewAll_CheckedChanged(object sender, EventArgs e)
    {
        TxtLibrary myList = new TxtLibrary(filePathBooks);
        myList.chooise = "all";
        //myList.ReadFromFileBooks();
        DataTable table = new DataTable();
        foreach (var array in myList.ReadFromFileBooks())
        {
            table.Rows.Add(array);
        }
        dataGridViewLibrary.DataSource = table;
    }

しかし、結果としてエラーが発生しました。

一時変数を追加して結果を確認してみてください。ただし、問題ありません。下の図を参照してください。

ここに画像の説明を入力

どこが間違っていますか?多分私は正しい方法でdataGridViewを使用していませんか?

編集

ファイル例(簡易csv)

11111, 著者, 名前, カテゴリー

11341, 作成者1, 名前1, カテゴリー1

4

2 に答える 2

2

行を追加する前に、最初に列を追加する必要があります。DataTable

private void radioButtonViewAll_CheckedChanged(object sender, EventArgs e)
{
    TxtLibrary myList = new TxtLibrary(filePathBooks);
    myList.chooise = "all";
    DataTable table = new DataTable();
    //add columns first
    table.Columns.Add("ID");
    table.Columns.Add("Author");
    table.Columns.Add("Caption");
    table.Columns.Add("Categories");
    //then add rows
    foreach (var array in myList.ReadFromFileBooks()) {
        table.Rows.Add(array);
    }
    dataGridViewLibrary.DataSource = table;
}
于 2013-10-20T06:29:49.663 に答える
1

あなたのコードは複雑すぎると思います。簡単に言えば、ファイルからテーブル内のすべてのデータを表示したい場合は、これを行うことができます

if (!System.IO.File.Exists("file.txt"))
            return;
        dgvDataGridView.ColumnCount = 4;
        dgvDataGridView.Columns[0].HeaderCell.Value = "ID";
        dgvDataGridView.Columns[1].HeaderCell.Value = "Author";
        dgvDataGridView.Columns[2].HeaderCell.Value = "Caption";
        dgvDataGridView.Columns[3].HeaderCell.Value = "Categories";
        using (System.IO.StreamReader sr = new System.IO.StreamReader("file.txt"))
            while (sr.Peek() > -1)
                dgvDataGridView.Rows.Add(sr.ReadLine().Split(','));
于 2013-10-19T22:20:12.117 に答える