場景:在Developer Express控件gridcontrol中的gridView中,當醫生開的臨時醫囑的醫囑類型為"中草葯","計價總量"單元格不可以自由可輸入,其余的醫囑類型,"計價總量"則可以自由輸入。
由於查詢資料,只有設置列的屬性,沒有設置某一個單元格的屬性。參考鏈接:http://www.docin.com/p-278065085.html
解決辦法:通過行焦點改變事件和列焦點改變事件進行控制單元格是否可用輸入。
private void gridView_Lsyz_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e) { if (this.CurrentOperationState == OperationState.emAddTempMedOrd || this.CurrentOperationState == OperationState.emEditTempMedOrd) { if (gridView_Lsyz.FocusedRowHandle >= 0) { //case 16954 object objyzlx = gridView_Lsyz.GetRowCellValue(gridView_Lsyz.FocusedRowHandle, colYzlx); if (objyzlx != null && objyzlx.ToString() != "") { if (objyzlx.ToString() == "自備葯品") { if (ZBYIsFreeInput) { this.GridViewReadOnly(gridView_Lsyz, "DOSEUNIT", false); } } if (objyzlx.ToString() == "中草葯") { //中草葯計價總量不可輸入Case#27998 this.GridViewReadOnly(gridView_Lsyz, "AMOUNT", true); } else { this.GridViewReadOnly(gridView_Lsyz, "DOSEUNIT", true); //非中草葯計價總量可輸入Case#27998 this.GridViewReadOnly(gridView_Lsyz, "AMOUNT", false); } } } } }
private void gridView_Lsyz_FocusedColumnChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedColumnChangedEventArgs e) { if (gridView_Lsyz.FocusedRowHandle >= 0) { DataRow currentRow = gridView_Lsyz.GetDataRow(gridView_Lsyz.FocusedRowHandle); if (currentRow["MEDORDTYPE"].ToString() != "中草葯") { gridView_Lsyz.Columns["DOSECOUNT"].OptionsColumn.AllowFocus = false; this.GridViewReadOnly(gridView_Lsyz, "AMOUNT", false);//非中草葯計價總量可輸入Case#27998 } else { gridView_Lsyz.Columns["DOSECOUNT"].OptionsColumn.AllowFocus = true; this.GridViewReadOnly(gridView_Lsyz, "AMOUNT", true);//如果是中草葯計價總量不可輸入Case#27998 } } }
public void GridViewReadOnly(DevExpress.XtraGrid.Views.Grid.GridView gridView, string columnsName, bool readOnly) { if (!readOnly) { gridView.Columns[columnsName].OptionsColumn.ReadOnly = false; gridView.Columns[columnsName].OptionsColumn.AllowFocus = true; gridView.Columns[columnsName].OptionsColumn.AllowSize = true; } else { gridView.Columns[columnsName].OptionsColumn.ReadOnly = true; gridView.Columns[columnsName].OptionsColumn.AllowFocus = true; gridView.Columns[columnsName].OptionsColumn.AllowSize = true; } }