簡體   English   中英

在DataGridView中完成添加行

[英]Complete Adding Row in DataGridView

我敢肯定對此有一個簡單的答案,但對於我的一生,我看不到:

我有一個綁定到DataTable的DataGridView。 其中一個單元格可以包含相當長的字符串,因此我創建了一個編輯器對話框窗口(它也進行了一些驗證等),該窗口在DataGridView的CellDoubleClick上打開。 當用戶在編輯器對話框上單擊“確定”時,該值將被放入單元格中。

只要它是已經添加到DataGridView的單元格,它就可以正常工作,但是如果我在“添加新行”(其中DataGridViewRow.IsNewRow為true)上進行操作,那么在關閉對話框時,我會遇到雙重問題除非該行處於編輯模式並且隨后無法添加新行,否則不會顯示已編輯的字符串。

我可以看到的一個潛在解決方案是,確保在打開對話框窗口之前將新行添加到基礎源中,但是我看不到一種完美的方法(DataGridView.EndEdit()不能這樣做)。 那么,有沒有一種整潔的方法可以做到這一點(或者完全有更好的解決方案)?

代碼如下所示:

void DataGridViewCellCoubleClick(object sender, DataGridViewCellEventArgs e){
    DataGridView gridview = (DataGridView)sender;
    gridview.EndEdit();
    EditForm editForm = new EditForm(gridview.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString());

    if(editForm.ShowDialog() == DialogResult.OK){
        gridview.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = editForm.StringResult;
    }

}

編輯:

我找到了可以滿足我要求的解決方案:

致電之前:

DataGridView.EndEdit()

我還檢查當前行是否為“ IsNewRow”,如果使用

DataGridView.NotifyCurrentCellDirty(true)

在我打開編輯窗口之前添加了它。 希望能對某人有所幫助。

我認為問題在於將數據表綁定到數據GridView的方式。

我將創建一個綁定源並將其Datasource設置為DataTable。 然后,我會將您的Datagrid視圖的數據源設置為綁定源。

在Datagrid視圖中添加新行時,請在數據表中創建新行,然后刷新數據表。

這些更改都應在Datagrid視圖中反映出來,因為它們都受Binding源綁定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM