0

바인딩 후 DataGridView에 열 유형을 변경하는 방법 :다음과 같이 내가 데이터베이스에서 검색 목록 <code>dgvPrint</code>라는 DataGridView를 넣은

initial data

:

dgvPrint.DataSource = ReservedServices.GetAll(); 

결과는 다음과 같다

Worker 열과 ServiceType 열은 두 테이블의 기본 키를 참조하는 정수입니다.

ServiceTypeWorker의 열 유형을 간단한 텍스트에서 DataGridViewComboBoxColumn으로 어떻게 변경할 수 있습니까?

주 1 :이 두 열의 현재 값은 해당 콤보 상자의 ValueMember입니다.

주 2 : 다른 열의 데이터와 위치를 보존하고 싶습니다.

나는 Worker 열이 코드를 사용했지만 제대로 작동하지 않습니다

DataGridViewComboBoxColumn colbox; 
colbox = (DataGridViewComboBoxColumn)dgvPrintServices.Columns[4]; 
colbox.DataSource = WorkerServices.GetAll(); // a list of worker with Id and Name 
colbox.DisplayMember = "Name"; 
colbox.ValueMember = "Id"; 
dgvPrint.Columns.Add(colbox); 
+0

그래서 Combobox를 읽기 모드로보고 싶습니까? –

+0

사실 아니요, 특히 근로자를 변경하고 싶습니다. –

+0

근로자 열을 편집 할 때 현재 TextBox를 받고 있습니까? –

답변

0

을 정의하고 (사용 VS의 GUI 또는 코드에 의해 같은 중 하나 DataGridView에 열을 추가 에 있습니다 예를 들어 벨로우즈 당), 올바른 .DataPropertyName을 설정하십시오. 해당 열 중 하나가 Worker 열이되며 여기에는 게시물에 나열된 코드 인 추가 코드가 있습니다. 그리고 다음 데이터 소스를 추가하십시오.

다른 말로하면, 코드가 정확하다고 생각하지만 데이터 소스를 지정하고 열 속성을 설정하는 순서가 변경되어야합니다.

VB.NET :

With WIcol4 
     .Width = "120" 
     .HeaderText = "Worker" 
     .DataPropertyName = "Worker" 
     .DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft 
     .DefaultCellStyle.Padding = New Padding(0, 0, 6, 0) 
     .DropDownWidth = 300 
     .Name = .DataPropertyName 
     .DataSource = dtWorker 
     .ValueMember = "ID" 
     .DisplayMember = "Name" 
     .ReadOnly = False 
    End With 

    Me.dgwOps.Columns.Add(WIcol4) 

C 번호 :

var _with1 = WIcol4; 
    _with1.Width = "120"; 
    _with1.HeaderText = "Worker"; 
    _with1.DataPropertyName = "Worker"; 
    _with1.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft; 
    _with1.DefaultCellStyle.Padding = New Padding(0, 0, 6, 0); 
    _with1.DropDownWidth = 300; 
    _with1.Name = _with1.DataPropertyName; 
    _with1.DataSource = dtWorker; 
    _with1.ValueMember = "ID"; 
    _with1.DisplayMember = "Name"; 
    _with1.ReadOnly = False; 

    this.dgwOps.Columns.Add(WIcol4); 

주, 즉 열이 쓸 수 있도록, 된 DataGridView과 열 모두 읽기 전용 = 거짓이어야한다.

관련 문제