0
我有一个列表,当dgv1填充时,在dgv2中填充streetId和streetName,我有一个comboboxcolumn列表,因此我填充街道,但是我填充有cabName cmbxcolumn我需要根据到第一列选择(streetName)。我有一个表,照相机对其进行过滤:当基于列表项的选择过滤组合框时有重复的值
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
这里我已经试过: 我为相机创建了一个数据表:
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
我需要过滤它显示只有一个名字,我认为有一个错误的过滤,有没有人有一个想法。
它不工作,你试过了吗?有没有办法将cab表用作数据源,然后通过其他方式进行绑定和过滤 –