使用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
}
答案 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
的文档包含一系列支持的功能(向上滚动以找到它)。