我剛開始學習C#
,我對DataSet/DataTable/DataGridView
有點困惑。 現在我有一個簡單的表格,其中有DataGridView
,listBox
,按鈕。當我的表單加載到列表框中時,我正在獲取Excel表單的列表。然後我選擇其中一張,然後出現在DataGridView
(我正在寫給DataSet
和DataTable
的所有信息)。我想在運行時添加或刪除列。這裏是我的Delete
按鈕的代碼:我可以在運行時將更改的信息保存在datagridview中嗎?
excelConn = new OleDbConnection();
excelConn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " + excelFilePath + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\"";
DataTable dt = new DataTable();
OleDbDataAdapter ExcelAdapt = new OleDbDataAdapter("Select * From " + "[" + tableName + "]", excelConn);
ExcelAdapt.Fill(dt);
try
{
dt.Columns.Remove(colName);
dt.AcceptChanges();
var bds = new BindingSource();
bds.DataSource = dt;
grid.DataSource = bds;
MessageBox.Show("Column(s) deleted ");
excelConn.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
我現在面臨的問題是,我無法保存在運行時,甚至在運行時,這些改變是暫時的改變。如果在運行時添加新列,然後我從ListBox
中選擇另一個表,這些更改將消失。
我found this tutorial但如果我理解得好,它會改變數據庫;以及在我的情況下,它會改變Excel文件(但我想有原始的Excel文件,並只在DataSet
和DataTable
進行更改)。
我可以只在DataSet/DataTable
進行更改。如果是,那麼如何?
看看這個答案:http://stackoverflow.com/questions/57987/writing-into-excel-file-with-oledb – udog
沒有時間發佈答案,但通常的方式來保存數據表是序列化它到XML。這意味着你在代表數據表的磁盤上創建一個xml文件。 http://stackoverflow.com/questions/2458847/how-to-serialize-a-datatable-to-json-or-xml –