하드웨어 구성 xml 파일을 읽고 해당 데이터를 프로토콜 유형 및 채널별로 정렬하여 두 열의 gridview에 표시되는 추가 수정 작업을하고 있습니다. . 열 1은 채널 이름을 DataGridViewTextBoxColumn으로, 열 2는 SQL 데이터베이스 (채널 유형)의 쿼리에서 생성 된 드롭 다운 목록에서 항목을 선택할 수 있어야하는 DataGridViewComboBoxColumn으로 설정됩니다. 인터페이스 채널 형C에서 런타임에 DataGridVewComboBoxColumn의 DataSource를 변경하는 방법
"인터페이스"열들이 RS232 인 경우 "채널 형"을 구별하는 키를 RS422로 사용됩니다
SQL 데이터베이스 테이블 자체는 다음과 같습니다 몇 열이 , RS485 등.
DataGridView를 채우는대로 먼저 모든 RS422 채널 목록을 실행하고 RS232 목록 등을 순서대로 실행합니다. 그러나이 작업을 수행하려면 ComboBoxColumn에 대한 DataSource를 먼저 변경해야합니다. 예를 들어 "SELECT Channel_Type FROM Table1 WHERE Interface = 'RS422'" 두 번째 필드에 대해 를 실행해야 할 것 "표로부터 Channel_Type을 선택 WHERE 인터페이스 = 'RS232'"
그래서 코드에서 나는 다음과 같습니다 불행하게도 내가하고 있기 때문에, 정확하게 데이터 소스를 변경하는 방법을 잘 모르겠습니다
private void scanner()
{
//...code for parser that assembles a List<> ...
ChannelTypeColumn.DataSource = Populate("SELECT Channel_Type FROM Table1 WHERE Interface='RS422'");
ChannelTypeColumn.ValueMember = "Channel_Type";
ChannelTypeColumn.DisplayMember = ChannelTypeColumn.ValueMember;
for(int x = 0; x < ChannelRS422List.Count; x++)
{
RowDataBuffer[0] = ChannelRS422List.channel;
dgv.Rows.Add(RowDataBuffer);
}
ChannelTypeColumn.DataSource = Populate("SELECT Channel_Type FROM Table1 WHERE Interface='RS232'");
for(int x = 0; x < ChannelRS232List.Count; x++)
{
RowDataBuffer[0] = ChannelRS232List.channel;
dgv.Rows.Add(RowDataBuffer);
}
}
private DataTable Populate(string query)
{
SqlCommand command = new SqlCommand(query, connection);
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = command;
DataTable table = new DataTable();
table.Locale = System.Globalization.CultureInfo.InvariantCulture;
adapter.Fill(table);
return table;
}
이 메서드를 사용하면 마지막 데이터 소스 정의의 항목 목록 만 표시됩니다.
도움과 조언을 주시면 감사하겠습니다.
감사합니다.
각 쿼리에 대해 하나씩 두 개의 데이터 표를 만드는 것이 어떨까요? – Roger
또는 두 가지 유형을 구별하기 위해 쿼리에서 GROUP BY를 사용하는 것은 어떻습니까? – Roger
채널 유형 이름이 어느 인터페이스에 대해서도 같은 이름을 가질 수 있기 때문에 GROUP BY를 사용할 수 없으며 추가 편집시 문제가 발생할 수 있습니다. 또한 목록이 매우 커집니다. 여러 개의 데이터 그리드를 사용하면이 작업을 수행 할 수없는 경우 해결 방법이 될 수 있지만 모든 하드웨어 구성 파일에 다중 인터페이스가 있어야하기 때문에 GUI가 얼마나 깨끗한 지 알 수 없습니다. – Pita