dgv1が満たされたときにstreetIdとstreetNameが埋め込まれたリストがあり、dgv2にはstreetNameのcomboboxcolumnがあります。リストアイテムからの選択に基づいてコンボボックスをフィルタリングするときに重複値を持つ場合
camIp cabCode streetId camType camCode
11.5 34 9 camtype1 PTZ
11.7 34 9 camtype2 C
12.1 19 10 camtype2 A
12.2 19 10 camtype3 B
12.3 19 10 camtype4 PTZ
とテーブルcabCode:私が試したものをここで
cabCode cabName
19 cabName1
34 cabName2
35 cabName3
私はテーブルのカメラを持っている.I第一列選択(streetName)に基づいて、それをフィルタリングする必要がcmbxcolumn cabNameを持っています: 私はカメラのデータテーブルを作成しました:
DataTable CamerastblUsage = new DataTable();
SqlCommand cmd5 = cnn.CreateCommand();
cmd5.CommandText = "SELECT cam.camIp,cam.cabCode,c.cabName,cam.streetId ,cam.camType,cam.camCode from camera cam , cab c where cam.cabCode = c.cabCode";
BindingSource unfilteredCamerasUsageBS = new BindingSource();
DataView undv2 = new DataView(CamerastblUsage);
unfilteredCamerasUsageBS.DataSource = undv2;
Column23.DisplayMember = "cabName";
Column23.ValueMember = "camIp";
Column23.DataSource = unfilteredCamerasUsageBS;
// this binding source is where I perform my filtered view
BindingSource filteredCamerasUsageBS = new BindingSource();
DataView dv6 = new DataView(CamerastblUsage);
filteredCamerasUsageBS.DataSource = dv6;
は、私はcellbegineditイベント使用:
if (e.ColumnIndex == Column23.Index)
{
//filter cabCode combobox based on streetId selected in column index 0
DataGridViewComboBoxCell dgcb = (DataGridViewComboBoxCell)dataGridView3[e.ColumnIndex, e.RowIndex];
dgcb.DataSource = filteredCamerasUsageBS;
this.filteredCamerasUsageBS.Filter = "streetId = " +
Convert.ToString(this.dataGridView3[e.ColumnIndex - 1, e.RowIndex].Value.ToString());
}
をけれどもstreetNameを選択する場合、例えばstreetName1イド10持っている、フィルタはcabNameのcomboboxcolumnに同じcabcode 19の三人の同じ名前を与える:
cabName3
cabName3
cabName3
フィルタリングする必要があります。名前を1つだけ表示する必要があります。フィルタリングに間違いがあると思う人はいませんか?
それは動作していない、それを試してみましたか?タクシーのテーブルをデータソースとして使用して、他の方法でバインドしてフィルタリングする方法はありますか –