我搜索了Web和Stack Overflow,發現了很多關於如何用DataTable的內容填充DataGridView的描述。但它仍然不適用於我。我的DataGridView顯示正確的列數和行數,但它們顯示爲空。C#:用DataTable填充DataGridView創建空表
我用下面的方法:
public void ShowDataInGrid(ref DataTable table)
{
BindingSource sBind = new BindingSource();
dbView.Columns.Clear();
dbView.AutoGenerateColumns = false;
sBind.DataSource = table;
dbView.DataSource = sBind; //Add table to DataGridView
dbView.Columns.Add("Date", "Date");
}
在此之前我通過設計器創建的名爲 「dbView」 一個DataGridView。我甚至不確定,我是否需要sBind。沒有它,我可以將表直接綁定到dbView,但結果相同。
我懷疑我的表是問題所在。它起源於一個數據庫(SQLite),並有多個列和行(其中一列的名稱爲「Date」)。它確實充滿了可讀的數據。 我主要讀表中使用下列命令(在此之後我操縱在幾個不同步驟中的數據,如改變字符串和添加數字...):
string sql = "select * from Bank";
SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection);
SQLiteDataReader reader = command.ExecuteReader();
table.Load(reader);
reader.Close();
table.AcceptChanges();
我想問題可能是,該表條目存儲爲對象而不是字符串,因此無法顯示。這就是爲什麼我試圖迫使內容是字符串有以下改變我的表:
DataTable dbTableClone = new DataTable();
dbTableClone.Load(reader);
SQLiteDataReader reader.Close();
dbTableClone.AcceptChanges();
string[] dBHeader = new string[dbTableClone.Columns.Count];
dBHeader = ReadHeaderFromDataTable(dbTableClone); //own funktion, which reads the header
DataTable table;
table.Clear();
//will first create dbTable as empty clone, so I can set DataTyp of each Column
table = dbTableClone.Clone();
for (int col = 0; col > dBHeader.Length; col++) //first set all columns as string
{
dbTable.Columns[col].DataType = typeof(string);
}
foreach (DataRow Row in dbTableClone.Rows)
{
dbTable.ImportRow(Row);
}
這對我沒有幫助也沒有。 另一個想法:我發現了一些關於類似問題的評論,其中引用了明顯的解決方法:「我設計了VS數據視圖設計器中的列,而不是列名,但DataPropertyName列必須與數據庫中的字段匹配。不幸的是,我似乎無法做到/理解這一點。
以下您看到我的輸入表的一行。
你可以簡短而準確地定義你的問題嗎? –
DataViewTable顯示具有正確行數(與綁定表相同)但沒有內容的表。每個單元格都是空的。 – Birk
您是否看到該表在執行查詢後有數據?'table.Load(reader);' –