1

私は次のように関数を書き込もうとしています:

private void Func1(DataColumnChangeEventArgs e)
{
    ds.TableName.AddRow(
        e.Row[e.Column.ColumnName, DataRowVersion.Original].ToString(),
    e.Row[e.Column.ColumnName, DataRowVersion.Proposed].ToString());
}

そして私はそれを次のように呼んでいます:

private void Func2()
{
    DataColumnChangeEventArgs e = new DataColumnChangeEventArgs(
        dataTable.Rows[index],
        dataTable.Columns["ColName"],
        newValue);

    e.ProposedValue = newValue;
    Func1(e);
}

ただし、e.Row[e.Column.ColumnName, DataRowVersion.Proposed].ToString()をスローしていVersionNotFoundExceptionます。これを達成する方法はありますか?

4

3 に答える 3

0

e.ProposedValue = newValueは冗長であり、コンストラクターですでにnewValueを指定しています。e.ProposedValueを介して値にアクセスできます。したがって、このシステムでは、一度に1つの行にしか変更を加えることができず、それがどの列であったかを覚えておく必要があります。

于 2012-09-27T07:51:04.913 に答える
0

メソッドは次のようになります。

ds.TableName.AddRow(e.Row[e.Column.ColumnName].ToString(), e.ProposedValue.ToString());

args の行のその行にはバージョンがありませんが、新しい値と古い値があります...

于 2012-09-27T08:27:47.340 に答える