一. 背景
在编写时使用了repositoryItemTextEdit和repositoryItemComboBox这两个控件,在使用控件时需要对他们所填或者所选的内容进行操作,通常c#中就是一句简单的xx.Text(0便可解决,但是在实际断点查找是并没有找到相应的内容,这对开发造成了影响,为了以后的开发,这里便写写对应的方法。
二、针对控件的方法
我们在使用Repository Item不的控件(如TestEdit、ComboBox),在确定其修改值之前(回车或者转移焦点),“内置”控件的值是不会被绑定的单元格感知到的,因此没有方法获取对应控件的值(这也是我在断点调试时发现没有一个属性是显示值的)。既然无法从本身获取,那么就从外部帮助我们获取,这里的GridView中有ActiveEditor()方法来获取正在操作的控件,这里返回的是一个BaseEdit属性的控件,这个控件提供了一个EditValue来获取Object属性的值,这里可以根据需求将之转换为个人想要的值,示例代码如下:
private void repositoryItemTextEdit_num_EditValueChanged(object sender, EventArgs e)
{
BaseEdit numEdit = bandedGridView_quote.ActiveEditor;
double num = Convert.ToDouble(numEdit.EditValue);
}
三、GridView或banGridView的方法
这里有种情况是在编辑完直接进行保存操作,这里不需要对特定的编辑内容有什么操作,但是不将之保存到对应的绑定内容,在保存时还是保存编辑前的内容。正如之前讲的,不能从本身解决那么就从外部处理,这里我们需要了解到的是GridView或者与之类似的之所以没能更新到所在数据源是因为编辑框还处于编辑状态,因此也没有更新。我们可以从上述的原因知道我们缺少两个步骤,第一是关闭编辑,第二就是更新数据。因此示例代码如下
private void Button_Save_Click(object sender, EventArgs e)
{
bandedGridView_quote.CloseEditor();
bandedGridView_quote.UpdateCurrentRow();
//其他操作
}