在c#中动态生成水晶报表时,动态添加sort
来源:互联网 发布:c语言调用系统命令 编辑:程序博客网 时间:2024/05/05 14:15
必须使用这种方式才可以动态添加公式为排序字段 objRPT.DataDefController.FormulaFieldController.AddByName(strFormulaName, strFormula, CrFormulaSyntaxEnum.crFormulaSyntaxCrystal); 我试图使用如下方式动态添加公式字段,但是用CanSortOn检测总是不能作为sort字段。 后来我发现找到的公式字段的IsRecurring属性是false.只有这个属性为true时才可以作为sort的字段。
{
if (!String.IsNullOrEmpty(this.SortField))
{
cCreateReport objCreateReport = new cCreateReport();
string[] arrySortField = this.SortField.Split(new char[] { ',' });
string[] arrySortDirection = this.SortDirection.Split(new char[] { ',' });
for (int i = 0; i < arrySortField.Length; i++)
{
string[] arryTemp = arrySortField[i].Split(new char[] { '|' });
string strFieldName = arryTemp[0];
string strFieldType = arryTemp[1].ToLower();
string strFormula = "", strFormulaName = "";
switch(strFieldType)
{
case "datetime":
strFormula = "date({" + arrySortField[i] + "})";
break;
case "numeric":
case "int":
case "money":
case "float":
strFormula = "ToNumber({" + arrySortField[i] + "})";
break;
default:
strFormula = "{" + arrySortField[i] + "}";
break;
}
strFormulaName = "Order" + i.ToString();
objRPT.DataDefController.FormulaFieldController.AddByName(strFormulaName, strFormula, CrFormulaSyntaxEnum.crFormulaSyntaxCrystal);
ISCRField objS = objRPT.DataDefController.FindFieldByFormulaForm("{@"+strFormulaName+"}");
if (objRPT.DataDefController.SortController.CanSortOn(objS))
{
SortClass objSort = new SortClass();
objSort.SortField = objS;
int countOfSort = objRPT.DataDefinition.Sorts.Count;
if (arrySortDirection[i] == "1")
{
objSort.Direction = CrSortDirectionEnum.crSortDirectionDescendingOrder;
}
else
{
objSort.Direction = CrSortDirectionEnum.crSortDirectionAscendingOrder;
}
objRPT.DataDefController.SortController.Add(countOfSort, objSort);
}
}
}
}
ISCRField objS = objRPT.DataDefController.FindFieldByFormulaForm("{@"+strFormulaName+"}");
string szName,
string szFormula,
CrFieldValueTypeEnum crFieldValueType
)
{
FormulaField oFormulaField;
oFormulaField = new FormulaField();
oFormulaField.Name = szName;
oFormulaField.Text = szFormula;
oFormulaField.Syntax = CrFormulaSyntaxEnum.crFormulaSyntaxCrystal;
oFormulaField.Type = crFieldValueType;
oReportClientDocument.DataDefController.FormulaFieldController.Add(oFormulaField);
}
{
FormulaField oFormulaField;
Fields oFields;
int iIndex;
oFormulaField = new FormulaFieldClass();
oFields = oReportClientDocument.DataDefinition.FormulaFields;
iIndex = oFields.Find(szFormula, CrFieldDisplayNameTypeEnum.crFieldDisplayNameName, CeLocale.ceLocaleUserDefault);
oFormulaField = ((FormulaField)oFields[iIndex]);
return oFormulaField;
}
- 在c#中动态生成水晶报表时,动态添加sort
- 如何在水晶报表中动态添加字段
- 如何在水晶报表中动态添加字段
- 如何在水晶报表中动态添加字段
- 如何在水晶报表中动态添加字段
- 如何在水晶报表中动态添加字段
- 动态生成水晶报表
- 动态生成水晶报表
- 水晶报表中动态添加字段
- VS2010动态生成水晶报表
- C#中为水晶报表动态动态设置数据源
- C#中为水晶报表动态动态设置数据源 收藏
- 水晶报表10 rdc 动态生成水晶报表 添加删除分组
- 在水晶报表中动态的添加自己所需要的的字段的代码
- 在水晶报表中动态的添加自己所需要的的字段
- 在水晶报表中动态的添加自己所需要的的字段
- 在水晶报表中动态的添加自己所需要的的字段
- 在水晶报表中动态的添加自己所需要的的字段的代码
- 802.11i无线技术点点通
- ubuntu terminal 常用快捷键
- flex 为之疯狂的
- 802.11i认证机制概述
- 数据挖掘读书心得(理论篇)
- 在c#中动态生成水晶报表时,动态添加sort
- js验证技术整理
- JavaScript内置对象属性及方法大全
- 关于c语言
- directshow 学习心得一
- JMS之ActiveMQ,仅作标签记录。
- 根据当前时间获取,本周,本月,本季度等时间段
- Developer Express .NET Winform - Winform的换肤
- 时刻牢记的人生箴言