這取決於你想要做什麼。你有2個選項。驗證行並返回顯示錯誤消息的消息框。或者你可以在單元格內有這個小紅色「x」,這兩種方法都可以工作。但需要稍微不同的實現。這兩種方法都需要您訂閱gridview的Validate行事件,而不是gridcontrol。
這樣的事情會給你一個文本框;
private void gridView1_ValidateRow(object sender,
DevExpress.XtraGrid.Views.Base.ValidateRowEventArgs e)
{
e.Valid = false;
}
和類似的東西會給你在單元格中的紅色'x';
private void gridView1_ValidateRow(object sender,
DevExpress.XtraGrid.Views.Base.ValidateRowEventArgs e) {
GridView view = sender as GridView;
GridColumn inStockCol = view.Columns["UnitsInStock"];
GridColumn onOrderCol = view.Columns["UnitsOnOrder"];
//Get the value of the first column
Int16 inSt = (Int16)view.GetRowCellValue(e.RowHandle, inStockCol);
//Get the value of the second column
Int16 onOrd = (Int16)view.GetRowCellValue(e.RowHandle, onOrderCol);
//Validity criterion
if (inSt < onOrd) {
//Set errors with specific descriptions for the columns
view.SetColumnError(inStockCol, "The value must be greater than Units On Order");
view.SetColumnError(onOrderCol, "The value must be less than Units In Stock");
}
}
的信息在這裏找到:http://documentation.devexpress.com/#windowsforms/DevExpressXtraGridViewsBaseColumnView_ValidateRowtopic
這仍然需要用戶退出小區,
我發現這裏的一些詳細信息:http://www.devexpress.com/Support/Center/p/A289.aspx
對於我這種方法轉儲數據源對象的當前值覆蓋用戶值。我正在尋找相反的行爲。 UpdateCurrentRow返回true。我已經檢查了DevExpress文檔,似乎你對你的解釋是可靠的,但是仍然無法工作,有什麼想法? – danijepg 2013-03-08 11:16:42
@danijepg你是否正在處理gridview上的任何其他事件? – 2013-03-08 11:46:55
Mouseclick,RowCellStyle和CustomDrawCell,但它們都不與驗證單元格無關。 鼠標單擊僅用於菜單。我試圖修改的單元沒有自定義編輯器,是一個整數 – danijepg 2013-03-08 11:57:10