原創|其它|編輯:郝浩|2012-11-19 10:59:23.000|閱讀 325 次
概述:如果你在Spread ASP.NET創建應用程序中需要定期使用不在內置函數里的一些其他的函數,又或者說你想要將一些內置的功能添加到單個函數上,你可以通過自定義函數來實現,那么你就可以將其作為內置的函數進行調用了。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
如果你在創建應用程序中需要定期使用不在內置函數里的一些其他的函數,又或者說你想要將一些內置的功能添加到單個函數上,你可以通過自定義函數來實現,那么你就可以將其作為內置的函數進行調用了。
自定義函數可以同內置函數有一樣的名字,單數自定義函數優先于內置的函數,自定義功能被動態的鏈接到評估時間,所以應用程序可以定義一個現有的自定義函數。
來看一下實例:
第一步就是創建自定義函數,在這個例子里面呢,有一個多維的數學函數,一個XOR邏輯函數,以及一個空字符串函數,將通過下面的代碼實現自定義功能:
C#代碼如下:
public class CubeFunctionInfo : FunctionInfo { public override string Name { get { return "CUBE"; } } public override int MinArgs { get { return 1; } } public override int MaxArgs { get { return 1; } } public override object Evaluate (object[] args) { double num = CalcConvert.ToDouble(args[0]); return num * num * num; } }
XOR自定義函數執行異或運算兩個布爾值,這類似于在C 中的“^”操作符或在VB中XOR運算符。
C#代碼如下:
public class XorFunctionInfo : FunctionInfo { public override string Name { get { return "XOR"; } } public override int MinArgs { get { return 2; } } public override int MaxArgs { get { return 2; } } public override object Evaluate (object[] args) { bool arg0 = CalcConvert.ToBool(args[0]); bool arg1 = CalcConvert.ToBool(args[1]); return (arg0 || arg1) && (arg0 != arg1); } }
空函數返回空值,類似于FALSE()函數返回假的常量值。
C#代碼如下:
public class NullFunctionInfo : FunctionInfo { public override string Name { get { return "NULL"; } } public override int MinArgs { get { return 0; } } public override int MaxArgs { get { return 0; } } public override object Evaluate (object[] args) { return null; } }
第二步就是用下面的代碼生成自定義函數。
FpSpread1.ActiveSheetView.AddCustomFunction(new CubeFunctionInfo()); FpSpread1.ActiveSheetView.AddCustomFunction(new XorFunctionInfo()); FpSpread1.ActiveSheetView.AddCustomFunction(new NullFunctionInfo());
第三步就是在公式中使用自定義函數,如下代碼所示:
C#代碼如下:
FpSpread1.ActiveSheetView.SetFormula(0, 0, "CUBE(5)"); FpSpread1.ActiveSheetView.SetFormula(1, 0, "XOR(FALSE,FALSE)"); FpSpread1.ActiveSheetView.SetFormula(1, 1, "XOR(TRUE,FALSE)"); FpSpread1.ActiveSheetView.SetFormula(1, 2, "XOR(FALSE,TRUE)"); FpSpread1.ActiveSheetView.SetFormula(1, 3, "XOR(TRUE,TRUE)"); FpSpread1.ActiveSheetView.SetFormula(2, 0, "CHOOSE(1,100,NULL(),300)"); FpSpread1.ActiveSheetView.SetFormula(2, 1, "CHOOSE(2,100,NULL(),300)"); FpSpread1.ActiveSheetView.SetFormula(2, 2, "CHOOSE(3,100,NULL(),300)");
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都控件