2013-03-21 17 views
3

我有一个窗体中的xtraGrid套件的GridView控件。 当我第一次打开表单时,它是AllowEdit = false。我希望当我按下添加新的行链接(由控制内置),使这个唯一新插入的行可编辑。我读过我应该使用ShowsEditor事件,但我不知道如何。 我写了这个迄今为止但这并不编辑该行:如何在GridView允许的情况下在GridView中启用对新插入行的编辑it = false?

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); 

     } 

回答

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; 
         } 
        } 
    } 
    

它不完整,只是一个方向探索。

希望我帮了忙。

相关问题