如何在gridview中允许编辑GridView中新插入的行,而allowit = false?

时间:2013-03-21 08:33:08

标签: winforms gridview devexpress xtragrid

我在表单中有一个xtraGrid套件的GridView控件。 当我第一次打开表单时,它是AllowEdit = false。我希望当我按下添加新的行链接(由控件内置)以使这个唯一的新插入行可编辑时。我读到我应该使用ShowingEditor事件,但我不知道如何。 到目前为止我写了这个,但这不能编辑行:

private void gridViewNote_ShowingEditor(object sender, System.ComponentModel.CancelEventArgs e)
        {
//this is first tryout  
            //if (gridViewNote.IsNewItemRow(gridViewNote.FocusedRowHandle))// == gridViewNote.GetFocusedDataRow())
            //{
            //    gridColumnStagione.OptionsColumn.AllowEdit = true;
            //}
//second tryout 
            GridView view = sender as GridView;
            SchedeMaterialiDaTaglioDS.SMTAGL_NOTERow currentRow = gridViewNote.GetFocusedDataRow() as SchedeMaterialiDaTaglioDS.SMTAGL_NOTERow;

            SchedeMaterialiDaTaglioDS.SMTAGL_NOTEDataTable changesTable = dsSchMatTaglio.SMTAGL_NOTE.GetChanges() as SchedeMaterialiDaTaglioDS.SMTAGL_NOTEDataTable;
            e.Cancel = !view.IsNewItemRow(view.FocusedRowHandle) &&
                !changesTable.Contains(currentRow);// set.Inserts.Contains(order);

        }

1 个答案:

答案 0 :(得分:3)

我希望我理解你的问题。一些简单的方法:

  1. 将存储库项添加到每个列并使用ShowingEditor处理e.Cancel事件,如果这应该是只读的话。

  2. 弹出一个窗口/文本框,让用户插入值并添加已经通过代码插入的值的行。

  3. 使用gridView.CustomRowCellEdit事件将两个不同的存储库项目分配到同一列。像这样:

    RepositoryItemTextEdit rep = new RepositoryItemTextEdit();
    RepositoryItemTextEdit noRep = new RepositoryItemTextEdit();
    noRep.ReadOnly = true;
    
    private void button1_Click(object sender, EventArgs e)
    {
        gridView1.AddNewRow();
        justAddedName = true;
        gridView1.RefreshData();
    }
    
    private void gridView1_CustomRowCellEdit(object sender, DevExpress.XtraGrid.Views.Grid.CustomRowCellEditEventArgs e)
    {
        if (e.Column == colname)
        {
            if (e.RowHandle == gridView1.RowCount - 1 && justAddedName)
            {
                e.RepositoryItem = rep;
            }
            else
            {
                e.RepositoryItem = noRep;
            }
        }
    }
    
  4. 这不完整,只是探索的方向。

    希望我帮助过。