0

을 사용하여 ComboBoxDataGridView으로 만듭니다. 그러나 ComboBox은 충분하지 않습니다. 나는 그것에 반복 된 값을 가지지 않기 위해서 나의 ComboBox을 필요로한다.dataGridViewComboBoxColumn에서 반복되는 값을 제거하십시오.

애플
블랙 베리
크롬
애플

내가 두 번 이상 나타나는 값을 제거하려면 :이 예입니다. 어떻게해야합니까?

OleDbConnection conn = new OleDbConnection(); 
OleDbCommand cmd = new OleDbCommand(); 
Dataset data = new Dataset(); 
OleDbDataAdapter adapter = new OleDbDataAdapter(); 
string path = "Data Source = "+".\\"+"test.accdb"; 
string conStr = "Provider = Microsoft.ACE.OleDb.12.0;"[email protected]; 
conn.Open(); 
string sql = "SELECT * FROM Table1;" 
cmd = new OleDbCommand(sql,conn); 
adapter = new OleDbDataAdapter(cmd); 
data = new Dataset(); 
adapter.Fill(data,"Table1"); 
DataGridViewComboBoxColumn testcolumn = new DataGridViewComboBoxColumn(); 
testcolumn.Name = "test na ja"; 
testcolumn.Datasource = data.table[0]; 
testcolumn.ValueMember = "Remedy"; 
testcolumn.DisplayMember = "Remedy"; 
dataGridview1.Columns.Add(testcolumn); 
conn.Close() 

답변

0

변화 remedy의 고유 한 값을 반환하는 SELECT 문 :

string sql = "SELECT DISTINCT remedy FROM Table1;" 

를 원하는 경우 주문 :

string sql = "SELECT DISTINCT remedy FROM Table1 ORDER BY remedy ASC;" 

또는

내 코드입니다
string sql = "SELECT DISTINCT remedy FROM Table1 ORDER BY remedy DESC;" 
0

고유 한 문을 SQL에 적용하는 것뿐만 아니라 아래 그림과 같이 두 번째 테이블을 만들 때 원래 DataTable에 별개를 적용 할 수 있습니다 (프로토 타입을 작성하는 데 사용한 단위 테스트 및 도우미 클래스 포함) .

별색이 적용된 선을 강조 표시하기 위해 주석을 추가했습니다. 사용하는 것은 부울 매개 변수 Distinct를 사용하여 고유 한 행만 반환하도록 지정하는 .ToTable() 메소드입니다.

[TestMethod] 
public void CreateDistinctDataTable() 
{ 
    DataTable originalTable = CreateDataTable(); 

    AddDataToTable("Fred", "Bloggs", originalTable); 
    AddDataToTable("Fred", "Bloggs", originalTable); 
    AddDataToTable("John", "Doe", originalTable); 

    // This is the key line of code where we use the .ToTable() method 
    DataTable distinctTable = originalTable.DefaultView.ToTable(/*distinct*/ true); 

    // The original table has two rows with firstname of Fred 
    Assert.AreEqual(2, originalTable.Select("firstname = 'Fred'").Length); 

    // The new table only has one row with firstname of Fred 
    Assert.AreEqual(1, distinctTable.Select("firstname = 'Fred'").Length); 
} 

private DataTable CreateDataTable() 
{ 
    DataTable myDataTable = new DataTable(); 

    DataColumn myDataColumn; 

    myDataColumn = new DataColumn(); 
    myDataColumn.DataType = Type.GetType("System.String"); 
    myDataColumn.ColumnName = "firstname"; 
    myDataTable.Columns.Add(myDataColumn); 

    myDataColumn = new DataColumn(); 
    myDataColumn.DataType = Type.GetType("System.String"); 
    myDataColumn.ColumnName = "lastname"; 
    myDataTable.Columns.Add(myDataColumn); 

    return myDataTable; 
} 

private void AddDataToTable(string firstname, string lastname, DataTable myTable) 
{ 
    DataRow row = myTable.NewRow(); 

    row["firstname"] = firstname;    
    row["lastname"] = lastname; 

    myTable.Rows.Add(row); 
} 

또 하나의 생각은 SQL 문의 테이블에서 *를 선택하지 않는 것이 좋습니다. 이는 더 많은 열 (특히 얼룩 같은 것들)이 추가되면 트랙에 성능에 영향을 줄 수 있으며 쿼리의 고유 한 특성을 손상시키는 열을 얻을 수도 있습니다.

관련 문제