2016-03-23 21 views
1

私はc#でdatagridviewを持っています。データソースはリストです。すべてのフィールドが列として追加されています。最後に別の列を追加します。DataGridViewLinkColumn、 DataGridViewLinkColumnをリフレッシュまたはリロードすると、そのデータが1回以上追加されます。 どんな助けでも大いに訴えられるでしょう。DataGridviewからすべてのデータを削除するためにリフレッシュする#

private void bidListToGridT(List<Item> list) 
{ 
    dataGridView1.DataSource = null; 
    dataGridView1.DataSource = list; 
    dataGridView1.AutoGenerateColumns = false; 
    dataGridView1.AllowUserToAddRows = false; 
    int i = 1; 
    foreach (DataGridViewRow row in dataGridView1.Rows) 
    { 
     row.Cells["NO"].Value = i; 
     i++; 
    } 
    dataGridView1.Columns[1].HeaderText = "Id"; 
    dataGridView1.Columns[2].HeaderText = "Name"; 

    DataGridViewLinkColumn Deletelink = new DataGridViewLinkColumn(); 
    Deletelink.UseColumnTextForLinkValue = true; 
    Deletelink.HeaderText = "Delet"; 
    Deletelink.DataPropertyName = "lnkColumn"; 
    Deletelink.LinkBehavior = LinkBehavior.SystemDefault; 
    Deletelink.Text = "Delete"; 
    dataGridView1.Columns.Add(Deletelink); 
    dataGridView1.Refresh(); 
} 

答えて

1

同じ列を何度も追加しないようにするには、グリッドビュー内にその列が存在するかどうか、それらを追加する前にチェックします。これを確認するには、次のコードを使用します。

bool hasDeleteColumn=false; 
foreach (DataGridViewColumn item in dataGridView1.Columns) 
    { 
     if (item.GetType() == typeof(DataGridViewLinkColumn) && item.HeaderText=="Delete") 
      { 
       hasDeleteColumn = true; 
       break; 
      } 
    } 
if(!hasDeleteColumn) 
    { 
    // Adding columns if not existing 
    DataGridViewLinkColumn Deletelink = new DataGridViewLinkColumn(); 
    Deletelink.UseColumnTextForLinkValue = true; 
    Deletelink.HeaderText = "Delete"; 
    Deletelink.DataPropertyName = "lnkColumn"; 
    Deletelink.LinkBehavior = LinkBehavior.SystemDefault; 
    Deletelink.Text = "Delete"; 
    dataGridView1.Columns.Add(Deletelink); 
    dataGridView1.Refresh(); 
    } 
+0

これは機能します。ありがとうございました –

関連する問題