2013-03-08 66 views
2

只是一個簡單的問題,我無法管理自己。驗證DevExpress GridControl中的單元格

我有一個DevExpress GridControl for Winforms(12.2)填充一些數值,網格是可編輯的,用戶可以更改這些值。

想象一下,用戶改變一個,我想要的是驗證這個單元格,以便獲得在我的數據源中修改的對應值,而不需要單擊單元格外部的單元格。

也就是說,我希望用戶能夠驗證並應用所有值,只需按下工具欄中的按鈕,而不是單擊enter,esc或單擊表格。

我一直在尋找一些論壇,並沒有得到正確的答案

感謝,

回答

1

在你處理程序menuItem_click做someething這樣的:

private menuItem_Click(object sender, EventArgs e) 
{ 
    gridView1.UpdateCurrentRow(); //return a bool, false = if validation error(s) was found 
} 

這迫使視圖驗證輸入並將其壓入數據源。

+0

對於我這種方法轉儲數據源對象的當前值覆蓋用戶值。我正在尋找相反的行爲。 UpdateCurrentRow返回true。我已經檢查了DevExpress文檔,似乎你對你的解釋是可靠的,但是仍然無法工作,有什麼想法? – danijepg 2013-03-08 11:16:42

+0

@danijepg你是否正在處理gridview上的任何其他事件? – 2013-03-08 11:46:55

+0

Mouseclick,RowCellStyle和CustomDrawCell,但它們都不與驗證單元格無關。 鼠標單擊僅用於菜單。我試圖修改的單元沒有自定義編輯器,是一個整數 – danijepg 2013-03-08 11:57:10

1

這取決於你想要做什麼。你有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