|
首先要綁定 ComboBox 然后綁定DataGridView
DataSet dsProp = new DataSet(); DataSet dsCond = new DataSet(); DataSet dsCond1 = new DataSet(); DataSet dsCond2 = new DataSet(); try { dsProp = App.DbService.GetStandardControlProp(intPrjCode, intStationId, intModuleId, intPointId); dsCond = App.DbService.GetStandardControlCond(intPrjCode,intStationId, intModuleId,1); dsCond1 = App.DbService.GetStandardControlCond(intPrjCode, intStationId, intModuleId, 2); dsCond2 = App.DbService.GetStandardControlCond(intPrjCode, intStationId, intModuleId, 3); dsStationInfo = App.DbService.getStationNameDs(intPrjCode); } catch (Exception ex) { MessageBox.Show(ex.Message, "Prompt", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (dsProp == null || dsCond==null) { MessageBox.Show("數(shù)據(jù)加載失敗!"); return; } DataRow drNew = dsStationInfo.Tables[0].NewRow(); drNew["stationid"] = System.DBNull.Value; drNew["stationnm"] = System.DBNull.Value; dsStationInfo.Tables[0].Rows.InsertAt(drNew, 0);![]() StationID.DataSource = dsStationInfo.Tables[0]; StationID.DisplayMember = "STATIONNM"; StationID.ValueMember = "STATIONID"; MODULEID.DataSource = dsCond.Tables[0]; MODULEID.DisplayMember = "MODULEID"; MODULEID.ValueMember = "MODULEID"; POINTNM.DataSource = dsCond.Tables[0]; POINTNM.DisplayMember = "POINTNAME"; POINTNM.ValueMember = "POINTID";![]() StationID2.DataSource = dsStationInfo.Tables[0]; StationID2.DisplayMember = "STATIONNM"; StationID2.ValueMember = "STATIONID"; MODULENM2.DataSource = dsCond1.Tables[0]; MODULENM2.DisplayMember = "MODULEID"; MODULENM2.ValueMember = "MODULEID"; POINTNM2.DataSource = dsCond1.Tables[0]; POINTNM2.DisplayMember = "POINTNAME"; POINTNM2.ValueMember = "POINTID";![]() StationID3.DataSource = dsStationInfo.Tables[0]; StationID3.DisplayMember = "STATIONNM"; StationID3.ValueMember = "STATIONID"; MODULENM3.DataSource = dsCond2.Tables[0]; MODULENM3.DisplayMember = "MODULEID"; MODULENM3.ValueMember = "MODULEID"; POINTNM3.DataSource = dsCond2.Tables[0]; POINTNM3.DisplayMember = "POINTNAME"; POINTNM3.ValueMember = "POINTID"; dgvList.DataSource = InitDT(dsCond.Tables[0].Copy(), 10, 0); dgvList2.DataSource = InitDT(dsCond1.Tables[0].Copy(), 7, 0); dgvList3.DataSource = InitDT(dsCond2.Tables[0].Copy(), 7, 1);![]() 注意設(shè)定ComboBox的屬性:DataPropertyName ,然后調(diào)用CellValueChanged事件,此事件主要完成在選定ComboBox時(shí)重新綁定要改變的ComboBox. private void dgvList_CellValueChanged(object sender, DataGridViewCellEventArgs e) { dgvCellAutoSetValue(e, dgvList); }
private void dgvCellAutoSetValue(DataGridViewCellEventArgs e, DataGridView dgv) {![]() if (e.ColumnIndex == 1) { if (e.RowIndex > -1) { if (dgv.Rows[e.RowIndex].Cells[1].Value == System.DBNull.Value) { return; } DataGridViewComboBoxCell cell = (DataGridViewComboBoxCell)dgv.Rows[e.RowIndex].Cells[2]; try { DataTable DtModule = App.DbService.GetModuleIDInfo(intPrjCode, Convert.ToInt16(dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].Value)).Tables[0]; if (DtModule.Rows.Count > 0) { cell.DataSource = DtModule; cell.DisplayMember = "MODULEID"; cell.ValueMember = "MODULEID";![]() if (cell.Items.Count > 0) { cell.Value = ((DataRowView)cell.Items[0]).Row[cell.ValueMember]; } } } catch (Exception ex) { MessageBox.Show(ex.Message); } } } else if (e.ColumnIndex == 2) { if (e.RowIndex > -1) { if (dgv.Rows[e.RowIndex].Cells[2].Value == System.DBNull.Value || dgv.Rows[e.RowIndex].Cells[1].Value==DBNull.Value) { return; } int stationid = Convert.ToInt16(dgv.Rows[e.RowIndex].Cells[1].Value); int moduleid = Convert.ToInt16(dgv.Rows[e.RowIndex].Cells[2].Value); DataGridViewComboBoxCell cell = (DataGridViewComboBoxCell)dgv.Rows[e.RowIndex].Cells[3]; try { DataTable DtPoint = App.DbService.GetPointInfo(intPrjCode, stationid, moduleid).Tables[0]; if (DtPoint.Rows.Count > 0) { cell.DataSource = DtPoint; cell.DisplayMember = "POINTNAME"; cell.ValueMember = "POINTID"; if (cell.Items.Count > 0) { cell.Value = ((DataRowView)cell.Items[0]).Row[cell.ValueMember]; } } } catch (Exception ex) { MessageBox.Show(ex.Message); } } } }![]()
|
|
|