簡體   English   中英

從Oracle數據庫向綁定的datagridview添加行

[英]Adding row to bound datagridview from oracle database

我正在嘗試構建由兩部分組成的datagridview ,其中一部分來自數據庫,另一部分收集有關本地硬盤上文件的信息,並將其顯示為一部分,但是我收到一條錯誤消息,內容為

當控件是數據綁定的時,不能以編程方式將行添加到datagridview行集合中

注意:知道稍后將使用datagridview來修改oracle數據庫上的數據

我上載imag是為了進一步了解前兩列來自數據庫

private void ListFileToBePatched()
{
    try
    {
        string connstr = "data source=orcl;user id=user;password=pwd";
        string cmdstr = @"SELECT OFFICE_CODE as ""Office Code"",
                                 IP_ADDRESS  as ""Office IP"" 
                            FROM table";

        string[] array = Directory.GetFiles(SBankfilespath, "*.txt");

        using (OracleConnection conn = new OracleConnection(connstr))
        using (OracleCommand cmd = new OracleCommand(cmdstr, conn))
        {
            conn.Open();
            OracleTransaction trans = conn.BeginTransaction();

            OracleDataReader OraReader = cmd.ExecuteReader();

            DataTable dt = new DataTable();

            DataColumn OfficeCodecolumn = new DataColumn();
            OfficeCodecolumn.DataType = System.Type.GetType("System.String");
            OfficeCodecolumn.ColumnName = "Office Code";
            dt.Columns.Add(OfficeCodecolumn);

            DataColumn OfficeIPcolumn = new DataColumn();
            OfficeIPcolumn.DataType = System.Type.GetType("System.String");
            OfficeIPcolumn.ColumnName = "Office IP Address";
            dt.Columns.Add(OfficeIPcolumn);

            DataColumn FileNamecolumn = new DataColumn();
            FileNamecolumn.DataType = System.Type.GetType("System.String");
            FileNamecolumn.ColumnName = "File Name";
            dt.Columns.Add(FileNamecolumn);

            DataColumn FullFilePathcolumn = new DataColumn();
            FullFilePathcolumn.DataType = System.Type.GetType("System.String");
            FullFilePathcolumn.ColumnName = "Full File Path";
            dt.Columns.Add(FullFilePathcolumn);

            DataColumn DateCreatedcolumn = new DataColumn();
            DateCreatedcolumn.DataType = System.Type.GetType("System.String");
            DateCreatedcolumn.ColumnName = "Date Created";
            dt.Columns.Add(DateCreatedcolumn);

            DataColumn Datemodifiedcolumn = new DataColumn();
            Datemodifiedcolumn.DataType = System.Type.GetType("System.String");
            Datemodifiedcolumn.ColumnName = "Date modified";
            dt.Columns.Add(Datemodifiedcolumn);

            foreach (string FullFilePath in array)
            {
                DataRow row = dt.NewRow();

                row[2] = Path.GetFileName(FullFilePath);
                row[3] = FullFilePath;
                row[4] = File.GetCreationTime(FullFilePath);
                row[5] = File.GetLastWriteTime(FullFilePath);

                dt.Rows.Add(row);
            }

            dt.Load(OraReader);
            DataView view = new DataView(dt);
            DGV_PatchStatus.DataSource = view;
        }
        FileCount.Text = "File Count ( " + DGV_PatchStatus.Rows.Count.ToString() + " )";
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}

在此處輸入圖片說明

您可以使用DataTable.NewRow方法將行添加到DataTable

foreach (string FullFilePath in array)
{
    DataRow r = DT.NewRow();

    r[0] = Path.GetFileName(FullFilePath);
    r[1] = FullFilePath;
    r[2] = File.GetCreationTime(FullFilePath);
    r[3] = File.GetLastWriteTime(FullFilePath);
}

然后只需再次將DT綁定為DataSource

DGV_PatchStatus.DataSource = DT;

編輯:

我真正需要的是每個辦公室都有文件列表

如果每個辦公室行都有多個文件,則應該查看此樹視圖教程,這可能確實有助於獲得所需的結果。

這也是Nested-DataGrid-Example ,可能也有幫助。 祝好運。

生成類對於從db中讀取后的數據,將數據分配給該對象,然后將對象放入List中,然后將DGV_PatchStatus.DataSource初始化為該列表,當您需要添加新行時,只需將數據對象添加到該列表中並重新初始化DGV_PatchStatus DataSource

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM