2016-10-28 3 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의 열을 통합하는 것이 좋습니다. 그런 다음 설명 된대로 새 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]. 값; 모든 셀 데이터 – Vasanth

+0

예를 들어,이 같은 코드 싶지 않아 우리는 전체 열 A 복사 할 수 및 B 열에 붙여 넣을 수 있습니다. 내 datagridview 함께 programatically 동일한 기능을 수행하려면 – Vasanth

+0

위의 예제 코드를 업데이트했습니다 . 문제에 대한 한 가지 성명의 해답이 없어야합니다. :-( – uqji

0

당신은 당신의 데이터 소스 목록입니다 말한다. 그래서 당신은 여분의 Property를 사용할 수 있습니다. 이것은 내가 생각하는 가장 쉬운 방법이 될 것입니다. 예를 들어 : = 사실

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

항상 C. 통해처럼 보이는 보이는 열 D가이 유형에 새 속성 추가

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

:

이 당신의 유형입니다/false이 열을 표시하거나 표시 해제 할 수 있습니다. 필자는 DataSource에서 모든 데이터 기반 항목을 처리하고이 데이터를 표시하기 위해 dataGridView를 사용하는 팬입니다.

희망이 도움이됩니다. 사용자가 C와 D의 값을 다르게 편집해야하기 때문에 추가 도움이 필요하면 알려 주시기 바랍니다;)

+0

감사합니다. 세비. – Vasanth

관련 문제