3

フォームに 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);

        }
4

1 に答える 1

3

私はあなたの質問を理解したと思います. これを行ういくつかの簡単な方法:

  1. 各列にリポジトリ アイテムを追加し、ShowingEditorイベントを処理しe.Cancelます。これが読み取り専用である場合に使用します。

  2. ウィンドウ/テキストボックスをポップアップして、ユーザーが値を挿入し、コードを介して既に挿入された値を持つ行を追加できるようにします。

  3. イベントを使用して、2 つの異なるリポジトリ アイテムを同じ列に割り当てます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;
            }
        }
    }
    

完全ではありません。探索する方向にすぎません。

私が助けてくれることを願っています。

于 2013-05-06T07:40:54.600 に答える