本文實例展示了DevExpress根據條件設置GridControl RepositoryItem是否可編輯的方法。
一般在C#項目的開發中,并不是每個RepositoryItem都可以編輯,往往是有條件性的,需要譬如當A列等于“AA”的時候,B列才可編輯,實現起來在ShowingEditor事件中最為方便,并且加入toolTip提示顯得人性化。
主要功能代碼如下:
private void gvLampConfig_ShowingEditor(object sender, System.ComponentModel.CancelEventArgs e){ GridView _view = sender as GridView; if (_view.FocusedColumn.Name == "colSavePowerGp1")//當列等于colSavePowerGp1 { string _type = _view.GetRowCellDisplayText(gvLampConfig.FocusedRowHandle, "OptStatusText_gp1"); if (!_type.Equals("節能"))//當列OptStatusText_gp1的列值不等于OptStatusText_gp1 { e.Cancel = true; ShowToolTip(toolTipController, "提示", "當是【調光狀態】是節能模式情況,可以設置該值!"); } }}public static void ShowToolTip(ToolTipController toolTip, string title, string content){ Point _mousePoint = Control.MousePosition; toolTip.ShowHint(content, title, _mousePoint);}
代碼運行效果如下:
為了調高代碼復用性,方便后續使用,可以這樣子封裝一下:
/// <summary>/// 設置RepositoryItem是否可編輯/// 說明:/// 在ShowingEditor事件中使用/// </summary>/// <param name="view">GridView</param>/// <param name="focusedColumnName">需要設置的列名稱</param>/// <param name="conditonHanlder">判斷委托</param>/// <param name="toolTip">ToolTipController</param>/// <param name="title">當條件委托成立的時候提示標題</param>/// <param name="content">當條件委托成立的時候提示內容</param>/// <param name="e">CancelEventArgs</param>private void CustomShowingEditorWithToolTip(GridView view, string focusedColumnName, Func<object, bool> conditonHanlder, ToolTipController toolTip, string title, string content, CancelEventArgs e){ if (view.FocusedColumn.Name.Equals(focusedColumnName)) { if (conditonHanlder(view.GetFocusedRow())) { e.Cancel = true; Point _mousePoint = Control.MousePosition; toolTip.ShowHint(content, title, _mousePoint); } }}
代碼使用如下:
private void gvLampConfig_ShowingEditor(object sender, System.ComponentModel.CancelEventArgs e){ GridView _view = sender as GridView; CustomShowingEditorWithToolTip(_view, "colSavePowerGp1", arg => ((LampSelfRunCfgParamter)arg).OptStatusText_gp1 != "節能", toolTipController, "提示", "當是【調光狀態】是節能模式情況,可以設置該值!", e);}
希望本文所示代碼能對大家有所幫助!
新聞熱點
疑難解答