在Paint函数中更改DataGrid样式中的属性类型?

时间:2012-07-26 06:27:44

标签: c# sql datagrid compact-framework

我有一个映射到SQLDataAdapater的数据网格,其中一个行是一个整数,它是一个对应于字符串的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上收到一个关于无效参数异常的错误,我认为这是因为类型,如果我设置了另一个整数,它运行正常。

1 个答案:

答案 0 :(得分:1)

我不使用PropertyDescriptor,但PropertyType只是{4}}。因此,如果它是一个整数,则无法将文本写入该值。

如果您想更改字段以显示某些文字,您可能需要更改SqlDataAdapter中使用的SQL,以便rowNum显示为文字。

例如,而不是这个SQL:

SELECT ID1
FROM Table1

您可以使用此版本的SQL:

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

现在,您可以将rowNum视为文本字段。

然而,这确实带来了代价。现在,您还必须将从字符串值读入的值转换为整数值。