0

SQLDataAdapter にマップするデータグリッドがあります。行の 1 つは、文字列に対応する ID である整数です。

ペイント機能でやりたいことは次のとおりです。

protected override void Paint( Graphics g, Rectangle bounds, CurrencyManager source, int rowNum, Brush backBrush, Brush foreBrush, bool alignToRight )
  {
     int id = ( ( int )this.PropertyDescriptor.GetValue( source.List[ rowNum ] ) );

     int oldValue = id;
    this.PropertyDescriptor.SetValue( source.List[ rowNum ], "Some Text" );// m_textDataMapping[ id ] );
     base.Paint( g, bounds, source, rowNum, backBrush, foreBrush, alignToRight );
     this.PropertyDescriptor.SetValue( source.List[ rowNum ], oldValue );
}

this.PropertyDescriptor.SetValue で、型が原因であると思われる無効な引数の例外に関するエラーが発生します。別の整数を設定すると、正常に動作します。

4

1 に答える 1

1

PropertyDescriptorは使用しませんが、そのPropertyTypeは読み取り専用です。したがって、整数の場合、その値にテキストを書き込むことはできません。

テキストを表示するようにフィールドを変更する場合は、テキストとして表示されるように、 SqlDataAdapterrowNumで使用される SQL を変更する必要があります。

たとえば、次のSQLの代わりに:

SELECT ID1
FROM Table1

このバージョンの SQL を使用できます。

SELECT CAST(ID1 AS nVarChar(50)) AS 'ID1'
FROM Table1

rowNumこれで、テキスト フィールドとして扱うことができます。

ただし、これには代償が伴います。ここで、読み込んだ値を文字列値から整数値に変換する必要もあります。

于 2012-07-26T16:50:32.687 に答える