![](/img/trans.png)
[英]DataTable.DefaultView not updated after adding new rows to DataTable
[英]Trouble adding new rows into a DataTable
這是我的數據表:
DataTable CSVFile = new DataTable();
CSVFile.Columns.Add("Occurrence_Date", typeof(DateTime));
CSVFile.Columns.Add("Preanalytical_Before_Testing", typeof(string));
CSVFile.Columns.Add("Cup_Type", typeof(string));
CSVFile.Columns.Add("Analytical_Testing_Phase", typeof(string));
CSVFile.Columns.Add("Area", typeof(string));
CSVFile.Columns.Add("Postanalytical_After_Testing", typeof(string));
CSVFile.Columns.Add("Other", typeof(string));
CSVFile.Columns.Add("Practice_Code", typeof(string));
CSVFile.Columns.Add("Comments", typeof(string));
我正在嘗試向其中添加一個新行:
DataRow newRow = CSVFile.NewRow();
newRow["Occurrence_Date"] = Convert.ToDateTime(splitcsvlines[GetColumnsNames.Occurrence_Date]);
newRow["Preanalytical_Before_Testing"] = splitcsvlines[GetColumnsNames.Preanalytical_Before_Testing];
newRow["Cup_Type"] = splitcsvlines[GetColumnsNames.Cup_Type];
newRow["Analytical_Testing_Phase"] = splitcsvlines[GetColumnsNames.Analytical_Testing_Phase];
newRow["Area"] = splitcsvlines[GetColumnsNames.Area];
newRow["Postanalytical_After_Testing"] = splitcsvlines[GetColumnsNames.Postanalytical_After_Testing];
newRow["Other"] = splitcsvlines[GetColumnsNames.Other];
newRow["Practice_Code"] = splitcsvlines[GetColumnsNames.Practice_Code];
newRow["Comments"] = splitcsvlines[GetColumnsNames.Comments];
CSVFile.Rows.Add(newRow);
但是我收到一個錯誤
'BulkUploadToLOMDatabase.GetColumnsNames' 的類型初始化程序引發了異常。`
我試圖只做newRow["Cup_Type"] = "something"
或newRow[2] = "something"
仍然得到同樣的錯誤
這是 class 的樣子:
class GetColumnsNames
{
public static int Occurrence_Date = Convert.ToInt16(ConfigurationSettings.AppSettings["Occurrence_Date"].ToString());
public static int Preanalytical_Before_Testing = Convert.ToInt16(ConfigurationSettings.AppSettings["1_0_Preanalytical_Before_Testing"].ToString());
public static int Cup_Type = Convert.ToInt16(ConfigurationSettings.AppSettings["Cup_Type"].ToString());
public static int Analytical_Testing_Phase = Convert.ToInt16(ConfigurationSettings.AppSettings["Analytical_Testing_Phase"].ToString());
public static int Area = Convert.ToInt16(ConfigurationSettings.AppSettings["Area"].ToString());
public static int Postanalytical_After_Testing = Convert.ToInt16(ConfigurationSettings.AppSettings["Postanalytical_After_Testing"].ToString());
public static int Other = Convert.ToInt16(ConfigurationSettings.AppSettings["Other"].ToString());
public static int Practice_Code = Convert.ToInt16(ConfigurationSettings.AppSettings["Practice_Code"].ToString());
public static int Comments = Convert.ToInt16(ConfigurationSettings.AppSettings["Comments"].ToString());
}
我究竟做錯了什么? 我的 class 出了什么問題?
The type initializer for BulkUploadToLOMDatabase.GetColumnsNames' threw an exception.
這意味着 CLR 嘗試創建您的類型但失敗了。 由於您有一堆 static 變量依賴於可能KeyNotFound
FormatExecption
NullException
失敗的調用,因此您應該將此 class 轉換為Z2ED500A3529637175E675A8791B7C56E 。
這樣您就可以正確捕獲 ConfigurationSettings.AppSettings 的任何問題
順便說一句,您可能要考慮改用system.configuration.configurationmanager 。 那是除非你在 1.1 中。 ConfigurationSettings.AppSettings 在 2.0 中已過時
確保 ConfigurationSettings.AppSettings 具有您要求的 integer 值。 看起來這是在拋出錯誤。
您的數據表和數據行代碼很好。
我認為問題出現是因為這行代碼:
public static int Occurrence_Date = Convert.ToInt16(ConfigurationSettings.AppSettings["Occurrence_Date"].ToString());
int32 值不能轉換為 DateTime 值:
newRow["Occurrence_Date"] = Convert.ToDateTime(splitcsvlines[GetColumnsNames.Occurrence_Date]);
正如@LarsTech 所說,您的 dataTable 相關代碼是正確的。 最危險的是我上面發布的代碼。 請在一個簡單的控制台中實現它,其中這個 (ConfigurationSettings.AppSettings["Occurrence_Date"].ToString() ) 特定值轉換為 int15,然后轉換為 DateTime。 你的結果是什么?
正如其他人所提到的,構建/加載表格很好......這是快速測試,使用序號 position 與列名來加載 10 個隨機值。 您在評論中說調試顯示正確的值,如果是這樣,那么一切都應該正常工作。 只需“確保”您獲得每個列值的預期數據類型。
DataTable CSVFile = new DataTable();
CSVFile.Columns.Add("Occurrence_Date", typeof(DateTime));
CSVFile.Columns.Add("Preanalytical_Before_Testing", typeof(string));
CSVFile.Columns.Add("Cup_Type", typeof(string));
CSVFile.Columns.Add("Analytical_Testing_Phase", typeof(string));
CSVFile.Columns.Add("Area", typeof(string));
CSVFile.Columns.Add("Postanalytical_After_Testing", typeof(string));
CSVFile.Columns.Add("Other", typeof(string));
CSVFile.Columns.Add("Practice_Code", typeof(string));
CSVFile.Columns.Add("Comments", typeof(string));
for (int i = 0; i < 10; i++)
{
DataRow row = CSVFile.NewRow();
row[0] = DateTime.Now.AddDays(i);
row[1] = "Field 2";
row[2] = "Field 3";
row[3] = "Field 4";
row[4] = "Field 5";
row[5] = "Field 6";
row[6] = "Field 7";
row[7] = "Field 8";
row[8] = "Field 9";
CSVFile.Rows.Add(row);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.