0

私のsyncfusionグリッドでは、タイプに基づいていくつかのシリーズセルを編集不可にする必要があります。タイプが「XXX」の場合、セルは編集可能です。タイプが「YYY」、「ZZZ」の場合、セルは編集できません。

だからここに;私がしたことです。

 private void theGrid_CurrentCellChanging(object sender, System.ComponentModel.CancelEventArgs e)
    {
        fp_data_typ typ;
        int nSeries = theData.GetNumSeries();
        for (int i = 0; i < nSeries; i++)
        {
            typ = theData.CheckType(i);
            if (!(typ == 'XXX'))
            {

                e.Cancel = true;
            }
        }

    }

TheGrid_CurrentCellChangingイベントとtheGrid_CurrentCellStartEditingのどちらを使用すべきかわかりません。ドキュメントはあまり明確ではありません。セル編集を処理するための大量のイベントを提供します。

以前のコードは正しく機能していません。グリッドに編集可能なシリーズと編集不可能なシリーズの組み合わせがある場合は機能しません。つまり、xxx)編集可能と'yyy'(編集不可)の両方がある場合、両方を編集不可にします。

4

2 に答える 2

0

以下のイベントは、要件を達成するのに役立ちます。

//Use this if you want to control the ReadOnly setting while loading itself
grid.QueryCellInfo += new GridQueryCellInfoEventHandler(grid_QueryCellInfo);

void grid_QueryCellInfo(object sender, GridQueryCellInfoEventArgs e)
{
    if (e.Style.CellValue.Equals("YYY"))
    {
        e.Style.ReadOnly = true;
    }
}

//Use this if you want to Validate while Editing
grid.CurrentCellValidating += new CurrentCellValidatingEventHandler(grid_CurrentCellValidating);

void grid_CurrentCellValidating(object sender, CurrentCellValidatingEventArgs e)
{
    //Will deactive the cell and new value will be discarded
    //e.NewValue = e.OldValue;

    //To remain in Edit mode without committing the vlaue
    e.Cancel = true;
}

ありがとう、シヴァクマール

于 2012-06-27T06:28:23.297 に答える
0

現在のセルの列インデックスを取得し、そこからe.cancelをtrue/falseに設定することができました。グリッド全体にe.cancelを一度設定する代わりに、編集中のセルに移動しました。

于 2012-05-17T17:53:03.657 に答える