2012-12-03 117 views
1

在互联网上有答案,但它不工作,我想知道我做错了什么。以编程方式向datagridview添加一行

我有一个DataGridView 1列,Column1。这是列的名称,而不是文本或其他任何内容。

private void InitializeComponent() 
    { 
     this.dataGridView1 = new System.Windows.Forms.DataGridView(); 
     this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn(); 
     ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); 
     this.SuspendLayout(); 
     // 
     // dataGridView1 
     // 
     this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; 
     this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { 
     this.Column1}); 
     this.dataGridView1.Name = "dataGridView1"; 
     // 
     // Column1 
     // 
     this.Column1.HeaderText = "Column1"; 
     this.Column1.Name = "Column1"; 
     ..... 
    } 

    public Form1() 
    { 
     InitializeComponent(); 

     // Works 
     DataGridViewRow row = (DataGridViewRow)dataGridView1.Rows[0].Clone(); 
     row.Cells[0].Value = "AAAAA"; 
     dataGridView1.Rows.Add(row); 

     // Fails 
     row = (DataGridViewRow)dataGridView1.Rows[0].Clone(); 
     row.Cells["Column1"].Value = "AAAAA"; // Argument Exception: "Column named Column1 cannot be found" 
     dataGridView1.Rows.Add(row); 
    } 

请解释一下吗?非常感谢!

回答

2

该行不是Datagridview的一部分,因此无法找到该列。要么将其添加回datagridview FIRST,然后使用列名称OR列出单元格的OR值来分配值:

row.Cells[dataGridView1.Columns["Column1"].Index].Value = "AAAAA"; 
+0

谢谢!我看到的其他地方都提到了我的代码。没有意识到行不是表的一部分,或者它没有引用列,因为它是一行的克隆。无论哪种方式,这就是我一直在寻找的,所以谢谢! – Tizz

相关问题