在我的WinForm
应用中,当我想在xtragrid
中添加一行时,我在获取焦点 textbox
的当前值时遇到问题。
假设我textBox
绑定到Model.VchType.Title
,在点击保存按钮之前,我的焦点位于txtTitle
,我输入了" title1&# 34;在它上面。
这是我的保存按钮事件代码:
Model.VchType row = xtraGrd.GetRow(xtraGrd.FocusedRowHandle) as Model.VchType;
我在null
获得row.Title
后,遇到此代码行中的断点。
只有在我点击保存按钮焦点在txtTitle
之前,才会出现此问题。
-------- UPDATE ------------
以下是一些模型代码:
[System.ComponentModel.DataAnnotations.Schema.Table("vwVchType", Schema = "Sle")]
[Serializable]
public class VchType : Entity
{
private int _ID;
[System.ComponentModel.DataAnnotations.Schema.Column]
[RnDisplayName(typeof(Rnw.Sle.Properties.Resources), "ID")]
public override int ID
{
get
{
return _ID;
}
set
{
_ID = value;
}
}
private string _Title;
[System.ComponentModel.DataAnnotations.Schema.Column]
[RnDisplayName(typeof(Rnw.Sle.Properties.Resources), "Title")]
public string Title
{
get
{
return _Title;
}
set
{
_Title = value;
}
}
}
我也是通过设计师创建了专栏。
我填充bindingSource
并将datasource
网格的属性设置为设计器中的此绑定源。
而且我不认为问题是列名,因为如果在我点击保存按钮之前我专注于另一个控制器,它工作正常,我得到了row.Title
的价值。
答案 0 :(得分:1)
您需要致电
((GridView)xtraGrid.FocusedView).PostEditor();
或
gridView.PostEditor()
这会将当前值保存到编辑器EditValue
。
然后,您需要调用view.UpdateCurrentRow()
来验证焦点行并将其值保存到数据源。
所以你需要这样的东西
((GridView)xtraGrid.FocusedView).PostEditor();
((GridView)xtraGrid.FocusedView).UpdateCurrentRow();
Model.VchType row = xtraGrd.GetRow(xtraGrd.FocusedRowHandle) as Model.VchType;
答案 1 :(得分:0)
您可以在保存数据之前聚焦其他表单对象。所以请致电:
anyControl.Select();
在你保存之前。这将关闭文本框中的打开编辑器并将更改发布到您的DataSource。通常这应该由PostEditor();
完成,有时似乎缺乏。