2016-10-28 20 views
0

私は4つの列数(A、B、C、D)を持つdatagridviewを持っています。条件は、opeartorが列Dを異なる列名(特定のインデックス位置)で複製する必要がありますが、まったく同じ内容(たとえば、列ヘッダーテキスト= 'Dのコピー')を必要とすることがあります。私は以下のコードを試しました。DataGridview列を特定のインデックス位置に複製する方法 - C#?

int lastcolidx = dataGridView3.Columns["SIGNAL TYPE"].Index; 
dataGridView3.Columns.Add(dataGridView3.Columns[lastcolidx].Clone() as DataGridViewColumn); 

しかし、これは単に、元の列の内容は、新しい重複列にコピーされないのDataGridViewの最後の位置に新しい空の列を追加します。どうすればいいのか教えてください。

+0

DataSourceの列をDublicateすることをお勧めします。次に、説明したように新しいGridColumnを作成し、DataSourceの新しい列をその列にバインドします。 – Sebi

+0

あなたのデータソースはどのタイプですか? DataTableまたはList またはsth? – Sebi

+0

私のデータソースはリストタイプ – Vasanth

答えて

0

基本的には列部分を行いましたが、行部分を欠いていました。列はUI(ユーザーインターフェイス、つまりデータの部屋)と似ていますが、行はデータそのものと似ています。なぜ新しく追加された列が空白なのか。データ行(または新しい列のセル)を塗りつぶすだけで済みます。

あなたのためのサンプルコード:

 DataTable dt = new DataTable(); 
     DataColumn dc1 = new DataColumn("a", typeof(string)); 
     DataColumn dc2 = new DataColumn("b", typeof(int)); 

     dt.Columns.Add(dc1); dt.Columns.Add(dc2); 

     dt.Rows.Add(new object[] { "sdfs", 23 }); 
     dt.Rows.Add(new object[] { "adbc", 5 }); 

     //The following part does the copying 
     DataColumn dc3 = new DataColumn("c", typeof(int)); 
     dt.Columns.Add(dc3); 
     foreach (DataRow dr in dt.Rows) dr.SetField<int>("c", dr.Field<int>("b")); 

     dataGridView1.DataSource = dt.DefaultView; 
+0

行データ全体をクローンするための単一のステートメントはありますか?/私たちはdatagridview3.rows [0] .cells [1] .value = datagridview3.rows [ 0] .cells [1] .value;私はすべてのセルのデータのためにこのようなコードをしたくありません – Vasanth

+0

例えば、Excelで列A全体をコピーしてB列に貼り付けることができます。私はdatagridviewでプログラム的に同じ機能を実行したいです – Vasanth

+0

私は上記のサンプルコードを更新しました。あなたの問題のための1つのステートメント解決策はありません。 :-( – uqji

0

あなたのDataSourceがリストであると言います。だからあなたは追加のプロパティを使うことができます。これは私が考える最も簡単な方法でしょう。たとえば:

これはあなたのタイプです:

public class MyClass 
{ 
    string A {get;set;} 
    string B {get;set;} 
    string C {get;set;} 
} 

このタイプに新しいプロパティを追加します。

public class MyClass 
{ 
    string A {get;set;} 
    string B {get;set;} 
    string C {get;set;} 
    string D { get{return C;}} 
} 

今、あなたは常にCを介してのように見える見え列Dを持っている=真/ falseこの列を表示または非表示にすることができます。私はDataSource内のすべてのデータベースのものを扱うファンであり、このデータを表示するためにdataGridViewを使用します。

これが役に立ちます。ユーザーがCとDの値を別々に編集する必要があるため、さらに助けが必要な場合はお知らせください)

+0

ありがとうSebi。 – Vasanth

関連する問題