Проверка ячеек в DevExpress GridControl
Просто простой вопрос, с которым я не могу справиться сам.
У меня есть GridControl DevExpress для Winforms (12.2), заполненный некоторыми числовыми значениями, сетка редактируема, и пользователь может изменить эти значения.
Представьте, что пользователь изменяет один, то, что я хочу, чтобы проверить эту ячейку, чтобы получить соответствующее значение, измененное в моем источнике данных, не нажимая aoutside ячейки.
То есть, я хочу, чтобы пользователь мог проверить и применить все значения, просто нажав a кнопка на панели инструментов, а не нажатие enter, esc или щелчок в таблице.
Я искал некоторые форумы и не получил правильного ответа
Спасибо,
2 ответов:
В вашем обработчике для menuItem_click сделайте что-нибудь вроде этого:
private menuItem_Click(object sender, EventArgs e) { gridView1.UpdateCurrentRow(); //return a bool, false = if validation error(s) was found }Это заставляет представление проверять входные данные и передавать их в источник данных.
Это зависит от того, что вы хотите сделать. у вас есть 2 варианта. либо проверить строки и возврата функции MessageBox с сообщением об ошибке. или вы можете иметь этот маленький красный " x " внутри ячейки
Оба метода будут работать. но требуют несколько иной реализации. оба метода требуют, чтобы вы подписались на событие Validate row gridview, а не 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
Comments