저는 C#에서 조금 새로운 것이지만 Winforms를 사용하고 있으며 데이터 소스에 연결되어 있고 올바르게 채워지는 DataGridView가 있습니다.동적으로 추가 된 DataGridViewComboBoxColumn의 comboBox 셀 텍스트를 변경하는 방법은 무엇입니까?
또한 런타임에 ComboBoxColumn을 추가했습니다. 이 ComboBoxColumn이 데이터 소스에 연결되고 displaymember 및 valuemember가 설정되고 headertext가 설정된 다음 해당 열이 DataGrid에 추가됩니다. 연결이 제대로 작동하고 사용자가 comboBox를 클릭하면 예상대로 채워집니다.
사용자가 그리드에서 새 행을 완료하면 사용자가 comboBox에서 해당 항목을 분명히 선택하고 완료되면 전체 행이 내 데이터베이스로 업데이트됩니다.
제 질문은 :이 데이터 격자를 다시 열거 나 다시 그릴 때 데이터 소스 속성으로 인해 채워지지만 빈 상자 대신 원래 선택한 VALUE를 표시하도록 comboBox 셀을 얻는 방법은 무엇입니까? DB에서 값을 가져 와서 값을 넣는 코드를 알고 있습니다. 그 변수를 comboBox의 디스플레이에 넣을 수 있다면 이상적입니다. comboBox는 여전히 데이터 바운드이므로 사용자가 원하는 경우 값을 편집 할 수 있습니다.
정상적인 comboBox 컨트롤에서 .Text 속성을 설정해야한다는 것을 알고 있습니다. 그러나 DataGridViewComboBox에는 동일한 속성이 없습니다.
public void AddComboBoxColumn(DataGridView datagridName, DataTable table, string headerText, int columnIndex)
{
DataGridViewComboBoxColumn column = new DataGridViewComboBoxColumn();
GetDisplayAndValueMembers(table, headerText); //Calls method that gets the datasource, displaymember, valuemember depending on column
column.DataSource = tableRef; //sets datasource to table referenced by column
column.DisplayMember = displayMember; //sets displaymember
column.ValueMember = valueMember; //sets valuemember
column.HeaderText = headerText; //changes headertext to displayed text
if (newColumnIndex == 0)
datagridName.Columns.Add(column); //added to end of datagrid
else
{
datagridName.Columns.RemoveAt(columnIndex);
datagridName.Columns.Insert(newColumnIndex, column); //added in specific index if needed
}
}
이것은 단지 드롭 다운의 dataconnection을 나타낸다 : 여기
는 실제 데이터 접속을위한 코드 및 comboBoxColumn의 추가이다. 분명히 많은 양의 코드와 함께 사용되는 많은 메소드가 있습니다. 하지만 이것은 문제가되지 않습니다. 이전에 선택한 항목을 comboBox의 텍스트로 표시하는 문제에 대해 어떻게 해야할지 모르겠습니다.
아마도 관련 코드를 표시하도록 질문을 향상 시키시겠습니까? –