Sbo通用数据选择功能的实现

  在Sbo Addon开发中,经常为了业务实现,需要从当前的业务数据库中列举出符合条件信息,供业务操作人员进行选择,并且将选择之后的数据及其相关">信息传递到当前的业务界面,或者填充当前的业务控件(比如编辑文本、下拉框等),或者填充Matrix中的指定Column,以及更加个性化的业务处理(比如根据选择的数据进行业务初始化、业务流程处理等)。

  这的确是一个很常用的功能,有必要对其进行业务抽象和归纳,形成一个通用的数据选择功能。富盛Sbo程序开发框架有效的解决了这一问题。

  因为业务不同,需要选择的业务数据也不同。就是说,这个通用的数据选择提供的选择数据是不确定的,自然选择条件是不确定的,提供操作用户的表示数据是不确定的,选择之后的传递到业务界面上的数据和业务操作也是不确定的。

  1、检索条件、数据展示定制化

  要展示不同的数据选择内容,并且展示数据可能来自不同的数据表中,甚至选择数据集的来源可能是SELECT语句,也完全可能是存储过程的返回集合,能够满足这种展示条件的只有使用Grid控件了。而Grid控件的数据来源是可以定制的,这又满足了数据检索条件不确定性的要求。

  实现如下:

              fsSbo.AddButton2Form(ref oForm, "btnChoose", "选择", 315, 10, 65, 20);              fsSbo.AddItem2Form(ref oForm, "2", BoFormItemTypes.it_BUTTON, 315, 80, 65, 20);                Grid grd = fsSbo.AddGrid2Form(ref oForm, "grdData", 5, 5, 530, 300);              grd.DataTable = oForm.DataSources.DataTables.Add("dtData");              grd.SelectionMode = BoMatrixSelect.ms_Single;                grd.DataTable.ExecuteQuery(strChooseDataSQL);              for (int i = 0; i < grd.DataTable.Columns.Count; i++)              {                if (grd.DataTable.Columns.Item(i).Type == BoFieldsType.ft_Integer || grd.DataTable.Columns.Item(i).Type == BoFieldsType.ft_Float)                  grd.Columns.Item(i).RightJustified = true;                  grd.Columns.Item(i).Editable = false;                  if (grd.Columns.Item(i).UniqueID.StartsWith("$$")) grd.Columns.Item(i).Visible = false;              }                grd.AutoResizeColumns();

  当然,在数据展示的时候,应该考虑到行业习惯,Grid数据栏目如果是数据类型应该自动将其展示为右对齐,显然,这是可以办到的。

  检索条件自动化、展示数据自动化、展示数据惯例化,看来都不是问题。在接下来要解决的是选择结果定制化,这也完全可以办到。

  2、数据选择业务处理定制化

  在选择数据窗口中,通过参数获得调用窗体及数据信息需要回写的控件Id,当然了,如果需要回写到Matrix中,除了需要指定这个Matrix的数据回写的列栏目,还应该指定需要回写的对应行;当然了,对于个性化的业务处理,在调用窗体中定义一个回调函数,在数据选择窗体的选择事件通过回调函数来完成个性化业务处理。

  实现方法如下:

          string[] strColumns = strFatherFields.Split(',');          string[] strValues = new string[strFatherFields.Length == 0 || frmFather != null ? dt.Columns.Count : strColumns.Length];          for (int i = 0; i < strValues.Length; i++)          {            string strValue = "";            if (dt.Columns.Item(i).Cells.Item(nSelectedRow).Value != null) strValue = dt.Columns.Item(i).Cells.Item(nSelectedRow).Value.ToString();            if (i < dt.Columns.Count) strValues[i] = strValue;          }            if (strFatherFId.Length > 0 && strColumns.Length > 0)          {            Form frm = fsSbo.fsSbo
Application.Forms.Item(strFatherFId);              oForm.Close();              frm.Freeze(true);            for (int i = 0; i < strColumns.Length; i++)            {              if (strMtxId.Length > 0 && nMtxRow > 0)              {                Matrix mtx = (Matrix)frm.Items.Item(strMtxId).Specific;                Column oColumn = mtx.Columns.Item(strColumns[i]);                  if (oColumn.Type == BoFormItemTypes.it_EDIT || oColumn.Type == BoFormItemTypes.it_EXTEDIT)                  fsSbo.SetValue2MtxEditText(ref mtx, strColumns[i], nMtxRow, strValues[i]);                else if (oColumn.Type == BoFormItemTypes.it_COMBO_BOX)                  fsSbo.SetValue2MtxCombox(ref mtx, strColumns[i], nMtxRow, strValues[i]);              }              else              {                Item oItem = frm.Items.Item(strColumns[i]);                if (oItem.Type == BoFormItemTypes.it_COMBO_BOX)                  fsSbo.SetValue2Combox(ref frm, strColumns[i], strValues[i]);                else if (oItem.Type == BoFormItemTypes.it_EDIT || oItem.Type == BoFormItemTypes.it_EXTEDIT)                  fsSbo.SetValue2EditText(ref frm, strColumns[i], strValues[i]);              }            }              if (frm.Mode != BoFormMode.fm_ADD_MODE) frm.Mode = BoFormMode.fm_UPDATE_MODE;              frm.Freeze(false);            frm.Refresh();            frm.Update();          }          else if (frmFather != null)          {            string strFormId = oForm.UniqueID;              oForm.Close();              frmFather.SetReturnValue4SelectForm(strValues, strFatherFields);          }

时间: 2024-09-20 07:51:07

Sbo通用数据选择功能的实现的相关文章

Winform开发框架之通用数据导入导出操作的事务性操作完善

1.通用数据导入导出操作模块回顾 在我的Winfrom开发框架里面,有一个通用的导入模块,它在默默处理这把规范的Excel数据导入到不 同的对象表里面,一直用它来快速完成数据导入的工作.很早在随笔<Winform开发框架之通用数据导入 导出操作>里面就很全面的介绍过它的相关功能了,在代码生成工具Database2Sharp里面,生成的 Winfrom界面代码也已经把它的调用代码放进去了,因此使用起来真是很好,很开心. 在不断的项目实践中,发现使用基于Sqlite的客户端作为单机版的操作也越来越

Swing通用数据验证模块

这段时间真是忙得要死,一方面要开发公司项目的系统框架,要将项目分成不同的子项目,编写核心 代码:另一方面要将极限编程(XP)引入团队开发,部署各类 XP需要的服务例如subversion啦,ant+ivy 啦,Hudson啦等等.顺便说句题外话,ubuntu还真是不是一般的好用,建议有能力的全部转到ubuntu上去 开发. 我目前开发的这个框架的客户端是具肥的客户端,也就是Swing客户端了.Swing应用相对于Web应用有 很多优势,因为它更肥.数据验证就是其中一个.当然现在的Web应用通过使

asp的通用数据分页类_ASP CLASS类

 (原创)<!--#include file="Conn.asp" --> 通用数据分页类     通用分页类,以后写分页显示数据时就轻松多啦.直接调用此类,然后再Execute即可以取得当前页的所有数据.     此类所做的工作是只取得当前页的数据,和总页数和总记录数等等数据. ASP代码: <% '/*****************************分页显示类************************** '/* 作者:哇哇鱼 '/* 日期:2004

web 应用通用数据访问层 Fetchr

Fetchr 是用于 web 应用程序的通用数据访问层. 通常情况下,你调用 API 和数据库直接获取数据.但在客户端上,你有时候无法以同样的方式调用服务(例如,跨域策略),XHR 请求需要发送到服务器,再获取服务.以这不同的方式编写代码来适应着两种环境很容易出错. Fetchr 提供了一个抽象层调用数据服务,这样你就可以在服务器和客户端使用同样的 API 获取数据. 文章转载自 开源中国社区[https://www.oschina.net]

EF 通用数据层类

EF 通用数据层父类方法小结 转载:http://www.cnblogs.com/yq-Hua/p/4165344.html MSSql 数据库 数据层 父类 增删改查:   using System; using System.Collections.Generic; using System.Data; using System.Data.Entity; using System.Data.Entity.Infrastructure; using System.Linq; using Sys

Winform开发框架之通用数据导入导出操作

做了很多Winform的项目,对于数据导入,一直也有自己的理解,由于一般的业务系统,经常性的数据导入时很正常的业务需求,因为毕竟使用Excel来操作数据也很方便,或者由于系统之间的数据交换需要,我们需要提供一个入口给客户导入所需要的数据.但是导入数据的时候,不同的业务数据对应不同的Excel文件,很难做到统一,但如果是每个业务模型,都创建一个不同的导入界面来操作Excel数据,又会觉得可能某种程度上重复劳动,增加开发及维护成本. 那么有无一种介于两者之间的方法,来实现效率的最优化,并且能够统一利

通用数据分页类

分页|数据 通用分页类,以后写分页显示数据时就轻松多啦.直接调用此类,然后再Execute即可以取得当前页的所有数据.此类所做的工作是只取得当前页的数据,和总页数和总记录数等等数据. ASP代码: <%'/*****************************分页显示类**************************'/* 作者:哇哇鱼'/* 日期:2004年11月18日'/* 作用:取得某一页的数据并返回给外部'/* 说明示例:'/* Dim MyPage=New PageClass'

Asp.Net 通用数据操作类 (附通用数据基类)第1/2页_实用技巧

文章内容为本站编辑,创作.你可以任意转载.发布.使用但请务必以明文标注文章原始出处及本声明 http://www.opent.cn  作者:浪淘沙此贴的方法会持续更新, 此文件要引用与数据操作的基类 using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.Web

Asp.Net 数据操作类(附通用数据基类)_实用技巧

using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; namespace EC {