首先要綁定 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("數據載入失敗!");
- 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);
複製代碼 注意設定ComboBox的屬性:DataPropertyName ,然後調用CellValueChanged事件,此事件主要完成在選定ComboBox時重新綁定要改變的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);
- }
- }
- }
- }
複製代碼 |