从datagridview列表达式调用自定义方法

时间:2010-02-23 08:02:25

标签: c# datagridview methods expression

使用c#,vs2008 winforms

我有一个datagridview,我在程序上绑定到一个绑定源,绑定到一个包含1个表的数据集。

使用sqlAdaptor填充数据集之后,我想在数据集中添加一个新列,并在新列中使用从表单中调用自定义方法派生的结果填充它。

代码例如下面但我得到一个“表达式包含未定义的函数调用this.Test()

是否允许在列

的表达式中调用方法

提前感谢任何帮助 欢呼声

this.dsProdOrdLst1.ProdOrder.Columns.Add("sOrderType", typeof(string), 
    "this.Test(order_type)"); // order_type is another column in the dataset

表单类中的其他地方是方法

public int Test(int orderType)
{
    return 10; //return a test value
}

1 个答案:

答案 0 :(得分:0)

AFAIK,这些表达式(称为ADO.NET expressions)无法调用任何类型的用户定义函数。但是,手动填充新列应该是微不足道的:

this.dsProdOrdLst1.ProdOrder.Columns.Add("sOrderType", typeof(string));

foreach (DataRow row in dsProdOrdLst1.ProdOrder.Rows)
{
    row["sOrderType"] = Test((int) row["order_type"]);
}

或者,您可能能够在ADO.NET表达式中实现整个函数,但实际上您只想为非常简单函数执行此操作,否则它将是一团糟:< / p>

IIF(order_type = 0, 'Mail', IIF(order_type = 1, 'Phone', 'Online'))

DataColumn.Expression的文档包含一系列支持的功能(向上滚动以找到它)。