有沒有辦法使用現有的列填充 DataGridView 的資料源?
我正在嘗試將 DataSource 設定為我的 DataGridView;每次我設定我的資料源時,它都會創建新的列,這不是預期的結果。
我希望資料顯示在現有的列中。
這是我的代碼:
DataTable dt = new DataTable();
dt.Columns.Add("SourcePath", typeof(string));
dt.Columns.Add("SourceFile", typeof(string));
dt.Columns.Add("OutputPath", typeof(string));
dt.Columns.Add("OutputFile", typeof(string));
dt.Columns.Add("Status", typeof(string));
dt.Columns.Add("Message", typeof(string));
dt.Rows.Add(new object[] { "Test", "Test", "Test", "Test", "Test", "Belgium" });
dt.Rows.Add(new object[] { "Test", "Test", "Test", "Test", "Test", "France" });
dt.Rows.Add(new object[] { "Test", "Test", "Test", "Test", "Test", "Germany" });
dt.Rows.Add(new object[] { "Test", "Test", "Test", "Test", "Test", "Spain" });
dt.Rows.Add(new object[] { "Test", "Test", "Test", "Test", "Test", "Switzerland" });
dt.Rows.Add(new object[] { "Test", "Test", "Test", "Test", "Test", "United Kingdom" });
datagridview.DataSource = dt;
我在這里做錯了嗎?
uj5u.com熱心網友回復:
當 DataGridView 的 DataSource 設定或更改時,默認行為是使用資料源中列的名稱生成列,因為AutoGenerateColumns屬性默認為true。
請參閱檔案中有關此屬性的備注部分。
如果在設計器中添加了 DataGridViewColumns,則將每個 Column 的DataPropertyName屬性與資料源中 Columns 的名稱進行比較。
找到匹配項時,現有 DataGridViewColumns 將系結到資料源中的匹配列。否則,將向網格中添加一個新列。
換句話說 - 正如 OP 所描述的那樣 - 當在沒有 a 的設計器中添加列DataPropertyName并且設定了新的 DataSource 時,DataSource 中的列將添加到網格中已經存在的列中。
如果DataPropertyName在設計器中未指定 DataGridViewColumn 的 ,您可以在分配DataSource屬性之前在代碼中設定它。例如:
var dt = new DataTable();
dt.Columns.Add(new DataColumn("SourcePath", typeof(string)) { Caption = "Source Path"});
// [...]
dt.Rows.Add(new[] { "Test", "Test", "Test", "Test", "Test", "Belgium" });
// [...]
// Assuming DGV Columns are added in the Designer without a DataPropertyName set
datagridview.Columns[0].DataPropertyName = dt.Columns[0].ColumnName
datagridview.Columns[0].HeaderText = dt.Columns[0].Caption
// Or in different ways, e.g.:
datagridview.Columns["SourcePath"].DataPropertyName = dt.Columns[0].ColumnName
datagridview.Columns["SourcePath"].HeaderText = dt.Columns[0].Caption
// [...]
datagridview.DataSource = dt;
uj5u.com熱心網友回復:
語法可能導致它。
DataTable dt = new DataTable();
dt.Columns.Add("SourcePath", typeof(string));
dt.Columns.Add("SourceFile", typeof(string));
dt.Columns.Add("OutputPath", typeof(string));
dt.Columns.Add("OutputFile", typeof(string));
dt.Columns.Add("Status", typeof(string));
dt.Columns.Add("Message", typeof(string));
var Row = dt.NewRow(); //Create a new row
Row["SourcePath"] = "Test";//Add Column value via Indexer
//Add Rest of Column Values
dt.Rows.Add(Row); //Append to Table Rows
uj5u.com熱心網友回復:
如果您不希望網格生成它在 DataSource 中找到的列并且似乎從自身中丟失,請設定
datagridview.AutoGenerateColumns = false;
在設定資料源之前
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/450336.html
上一篇:如何將彈出選單定位到按鈕的左側?
下一篇:為什么在更改SelectionBackColor后,“RichTextBox.SelectionBackColor”不會在新的和未選擇的文本上恢復為默認值?
