问题:
在打印模板中获取子表内容,可从数据库中取数据,而当前项目数据库里面数据按年度录入,但是只需要显示近3年的数据,插件如何实现排序取数据?
解决方法:
1、先直接写一个SQL语句,把近3年排序后的数据读取出来
2、在调用子表接口加载数据
3、示例:
var monthly = DateTime.Now.Month;
var selectsql = string.Format(@"SELECT
t1.Yearly,
t1.Monthly,
t1.BudgetUnitName,
t1.BudgetUnitCode,
t1.BudgetItemName,
t1.BudgetItemCode,
t1.Budget
FROM XL_YS_BudgetPay t1
WHERE t1.Yearly = {0}
--AND Monthly > {1}
AND t1.BudgetUnitCode = '{2}'
AND BudgetItemCode = '{3}'
ORDER BY Monthly", yearly, monthly, budgetunitcode, budgetitemcode);
var dt = OThinker.H3.WorkSheet.AppUtility.Engine.Query.QueryTable(selectsql);
var list = new List
var monthlist = new List
if (dt.Rows.Count > 0)
{
//DeptCostBudgetInfo 为子表名称
BizObjectSchema childSchema = this.ActionContext.Schema.GetProperty("DeptCostBudgetInfo").ChildSchema;
var bizObject = new BizObject(this.ActionContext.Engine, childSchema, this.ActionContext.User.UserID);
bizObject["DataType"] = "原始";
bizObject["BudgetItemName"] = dt.Rows[0]["BudgetItemName"].ToString();
bizObject["BudgetItemCode"] = dt.Rows[0]["BudgetItemCode"].ToString();
var bizObject2 = new BizObject(this.ActionContext.Engine, childSchema, this.ActionContext.User.UserID);
bizObject2["DataType"] = "修改";
bizObject2["BudgetItemName"] = dt.Rows[0]["BudgetItemName"].ToString();
bizObject2["BudgetItemCode"] = dt.Rows[0]["BudgetItemCode"].ToString();
for (int i = 0; i < monthlist.Count; i++)
{
bizObject[monthlist] = dt.Rows["Budget"].ToString();
bizObject2[monthlist] = dt.Rows["Budget"].ToString();
}
list.Add(bizObject);
list.Add(bizObject2);
}
if (bos != null)
{
if (bos.Length > 1)
{
list.AddRange(bos);
}
}
this.ActionContext.InstanceData["DeptCostBudgetInfo"].Value = list.ToArray();
ActionContext.InstanceData.Submit();