2016-11-02 35 views
1

的價值在我WinForm的應用程序時,我想在xtragrid添加行,我有得到的當前值的問題集中textboxXtraGrd.GetRow(XtraGrd.FocusedRowHandle)沒有得到集中的文本框

假設我有一個textBox結合Model.VchType.Title,在我點擊保存按鈕,我重點txtTitle,我輸入「TITLE1」就可以了。

這是我保存按鈕事件代碼:

Model.VchType row = xtraGrd.GetRow(xtraGrd.FocusedRowHandle) as Model.VchType; 

我得到nullrow.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

文本框是網格中的一個repositoryitem嗎?或者是GridComponent的TextComponent? – Sebi

+0

@Sebi它是網格中的一個repositoryitem –

+0

在保存數據之前,請嘗試將焦點設置在任何其他對象上。這不是那麼幹淨,但我有一些項目,這是有幫助的。因此,保存方法中的第一個操作是將焦點設置爲任何標籤或某物。走出電網。 – Sebi

回答

0

您可以集中保存您的數據之前,另一個窗體對象。所以致電:

anyControl.Select(); 

保存之前。這將關閉文本框中的打開編輯器並將更改發佈到您的數據源。通常這應該由PostEditor();完成,有時似乎缺乏。

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; 
+0

感謝您的回答,我使用了gridView.PostEditor(),但問題沒有解決。對於row仍然爲null。標題 –

+0

gridView.FocusedView.PostEditor();它說gridView dos不包含FocusedView的定義。所以我用gridView.PostEditor()代替。但沒有解決這個問題。 –

+0

你能發佈更多的代碼嗎?特別是模型。 –