求教C#用DataGirdViewCell添加行出现Bug 集合已属于 DataGridView 控件(列已定义)该怎么解决?

不能datagridview绑定sqlite数据库为数据源,因为需要在每一行数据前要加个复选框绑定数据源并刷新dgv的话就不能手动在每一行里加个列了。
问题button事件源码:

    SQLiteCommand commandInsert = null;
    SQLiteCommand commandSelect = null;
    string dataBaseTableName = "FileValueNote";
    SQLiteDataReader dr = null;
    DirectoryInfo dirInfo = new DirectoryInfo(@"F:\XTLBB3D");
    private void button1_Click(object sender, EventArgs e)
    {
        SQLiteConnection m_dbConnection = new SQLiteConnection("Data Source=CeShiDatabase.sqlite;Version=3;");
        m_dbConnection.Open();
        int i = 0;
        //遍历指定某目录下的所有文件
        foreach (FileInfo NextFile in dirInfo.GetFiles())
        {
            i += 1;
            string sqlInsert = "insert into " + dataBaseTableName + " (Id,FileName,FileAbsolutePath) values ('" + i + "', '" + NextFile.Name + "', '" + NextFile.FullName + "')";
            commandInsert = new SQLiteCommand(sqlInsert, m_dbConnection);
            commandInsert.ExecuteNonQuery();
        }
        //遍历指定某目录下,所有子目录下的所有文件
        foreach (DirectoryInfo NextDirectory in dirInfo.GetDirectories())  // 首先获取遍历子文件夹
        {
            foreach (FileInfo NextFile in NextDirectory.GetFiles())
            {
                i += 1;
                string sqlInsert = "insert into " + dataBaseTableName + " (Id,FileName,FileAbsolutePath) values ('" + i + "', '" + NextFile.Name + "', '" + NextFile.FullName + "')";
                commandInsert = new SQLiteCommand(sqlInsert, m_dbConnection);
                commandInsert.ExecuteNonQuery();
            }
        }
        DataGridViewColumn dgvc1 = new DataGridViewCheckBoxColumn();
        dataGridView2.Columns.Add(dgvc1);
        dgvc1.Name = "dgvc1";
        dgvc1.HeaderText = "是否删除";
        dgvc1.DataGridView.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
        DataGridViewColumn dgvc2 = new DataGridViewTextBoxColumn();
        dataGridView2.Columns.Add(dgvc2);
        dgvc2.Name = "dgvc2";
        dgvc2.HeaderText = "序号";
        dgvc2.DataGridView.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
        DataGridViewColumn dgvc3 = new DataGridViewTextBoxColumn();
        dataGridView2.Columns.Add(dgvc3);
        dgvc3.Name = "dgvc3";
        dgvc3.HeaderText = "文件名";
        dgvc3.DataGridView.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
        DataGridViewColumn dgvc4 = new DataGridViewTextBoxColumn();
        dataGridView2.Columns.Add(dgvc4);
        dgvc4.Name = "dgvc4";
        dgvc4.HeaderText = "文件绝对路径";
        dgvc4.DataGridView.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
        string sqlSelect = "SELECT * FROM " + dataBaseTableName + ";";
        commandSelect = new SQLiteCommand(sqlSelect, m_dbConnection);
        dr = commandSelect.ExecuteReader();
        DataGridViewRow row = new DataGridViewRow();
        int temp = 0;
        while (dr.Read())
        {
            temp += 1;
            DataGridViewCell checkBoxCell = new DataGridViewCheckBoxCell();
            row.Cells.Add(checkBoxCell);
            DataGridViewCell idCell = new DataGridViewTextBoxCell();
            idCell.Value = temp.ToString();
            row.Cells.Add(idCell);
            DataGridViewCell fileNameCell = new DataGridViewTextBoxCell();
            fileNameCell.Value = dr["FileName"].ToString();
            row.Cells.Add(fileNameCell);
            DataGridViewCell absolutePathCell = new DataGridViewTextBoxCell();
            fileNameCell.Value = dr["FileAbsolutePath"].ToString();
            row.Cells.Add(absolutePathCell);
            dataGridView2.Rows.Add(row);
        }
        MessageBox.Show("文件夹所有文件已输出");
    }
    

图片描述

阅读 3.8k
1 个回答
DataGridView 改变一下`Id`呢、
可能多个`Id`造成了报错
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
Microsoft
子站问答
访问
宣传栏