zoukankan      html  css  js  c++  java
  • MyGridControl

    概述

    MyGridControl是继承dev的GridControl,是GridControl的一个扩展控件。提供了一些非常简便的方法,使得开发非常方便。以后右键功能等也会添加上去。

    和DockBar等联动

    当选中行改变的时候我们大多需要和DockBar关联,会增加一个选择改变事件,调用一个公共方法去联动DockBar。现在这部分代码不用写了,MyGridControl会自动帮你完成这部分工作,另外和扫描控件会有联动,这部分也不用写。目前还没有支持,主要是扫描控件我要重新规划一下。

                GCDaiDengJWF.RelationDockBar = true;

    增加CheckColumn

    许多界面需要用到CheckColumn,自己手工加又使得每张界面多了几十行代码,而且效率也不高。使用MyGridControl控件只要将HasCheckColumn设置成True就可以了。如果需要单选还需增加IsRadio为true。

                GCDaiDengJWF.RelationDockBar = true;
                GCDaiDengJWF.Main = (FrmMain)this.MdiParent;

    需要获得选中信息可用GetCheckInfo和GetKey方法。前面一个获取所有选中行,后面一个根据主键得到一个逗号分割的字符串。

    CheckAll、InverseAll等提供全选反选功能

    如果某些特殊的行不想被选中,可在列中通过ChkReadOnly实现

    create or replace view bw_fuhedj_view as
    select a.s_kehuid, --客户编号
           a.s_cid, --账号
           a.s_ch, --册本号
           a.s_hm,--户名
           a.s_dz, --地址
           b.s_koujingmc as i_koujin, --口径
           COMMON_GetWordsContent(216, a.S_SHUIBIAOFL) AS S_SHUIBIAOFL, --表分类
           COMMON_GetWordsContent(212, a.S_BIAOXINGID) AS S_BIAOXINGID, --表型号
           a.s_shuibiaotxm, --表型码
           a.S_SHUIBIAOGYH, --表号
           a.s_st,--站点
           1 as ChkReadOnly
          from kg_biaokaxx a
          left join cy_shuibiaokj b on b.s_koujingbh =a.s_koujingbh
          where not exists
    (select s_cid from bw_gongdan  gd where gd.i_gongdanlx = 1 and gd.i_gongdanzt < 6  and gd.i_gongdanzt >0 and a.s_cid = gd.s_cid)
    and a.i_biaokazt =0;

    如果该列需要添加事件可使用ChkStateChanged事件

                GvDaiChuLiZX.ChkStateChanged += new UserControl.MyGridView.CheckBoxStateChanged(GvDaiChuLiZX_ChkStateChanged);

    ImageList

    对于Image列,手动绑定比较麻烦,只要在查询中加上ImageColumn就可以自动实现该功能。默认image支持0、1、2、3四种值,分别对应绿、蓝、橙、红四种图标。如果有特殊要求,也可以通过ImageList集合进行设置,设置后会覆盖原来的集合。

                img.Add(new UserControl.MyGridControl.ImageInfo { ImageName = "GridShow4.jpg", ImageValue = -1 });
                img.Add(new UserControl.MyGridControl.ImageInfo { ImageName = "GridShow3.jpg", ImageValue = 1 });
                GvbiaokaOut.ImageList = img;

     数据绑定增加

    一直觉得GridControl对自动绑定做的不是很好,导致我们现在都要先将需要的列加入到grid中,然后才能绑定。否则界面很难看,绑定的列名都是英文,大小也没法控制。现在增加了一个ColumnInitInfoCollection,是一个List。界面加载时传入,这样就不用一个个编辑列了。好处主要是可以自动绑定datatable,当后台逻辑发生变化时,我们还是不需要动界面代码。比如S_CID列变成S_ID了,但是我们界面不用变。还是老样子。实践发现这个功能有利有弊,如果因为一些特殊情况(比如增加多个checkbox或image等到grid中),这时ColumnInitInfoCollection就不用设置了,还是用以前在设计界面添加列的方式。

     对无效列的自动检测

     数据表自段修改时,不知道哪张界面会出问题,而且有问题GridControl也不会抛错,只是显示成空列。这里增加了自动检测功能,如果不匹配则throw异常,这样一下就能发现了。当然对性能有些影响,只在bebug模式有效。

    分页

    支持大数据量的分页功能,当数据量过大时,grid会自动启用分页,该分页是重写了原分页的功能。目前支持dto的分页和存储过程的分页。当使用dto分页时可以不用考虑具体的分页实现细节,grid控件会帮你实现所有功能。当使用存储过程分页时,存储过程需有count、pageSize、pageIndex的参数。

            public static DataTable FenYeTest() 
            {
                int pageSize = 20;
                int pageIndex = 0;

                OracleParameter[] storedParams;
                storedParams = OracleHelperParameterCache.GetSpParameterSet(Platform.Configuration.ConfigHelper.BusinessConnString, "COMMON_BIAOKATEST");
                storedParams[0].Value = "000000";
                storedParams[1].Value = pageSize;
                storedParams[2].Value = pageIndex;
                DataSet ds = new DataSet();
                ds = OracleHelper.ExecuteDataset(Platform.Configuration.ConfigHelper.BusinessConnString, CommandType.StoredProcedure, "COMMON_BIAOKATEST", storedParams);
                int? count = storedParams[3].Value is System.DBNull ? default(int?) : Convert.ToInt32(storedParams[3].Value);

                DataTable dt = ds.Tables[0];
                dt.ExtendedProperties.Add("sql""COMMON_BiaoKaTest");
                dt.ExtendedProperties.Add("count", count);
                dt.ExtendedProperties.Add("pageSize", pageSize);
                dt.ExtendedProperties.Add("pageIndex", pageIndex);
                //计算总页数
                int totalPageNum = (count.Value + pageSize - 1) / pageSize;
                dt.ExtendedProperties.Add("totalPageNum", totalPageNum);

                DBParameter[] db = ConvertOracleToDB(storedParams);
                dt.ExtendedProperties.Add("dbParameter", SerializeHelper.Serialize(db));

                return dt;
            }

    上传控件联动  

    上传控件可能和grid有联动关系,grid会自动显示隐藏上传控件。

                uploadControl1.LeiXing = "FuHeLC";
                uploadControl1.Init(this);
                uploadControl1.UpdateSysUploadImmediately = false;
                this.GCDaiDengJWF.UploadControl = uploadControl1;
  • 相关阅读:
    tracert命令与tracert (IP地址)-d有什么区别?
    linux下通过进程名查看其占用端口
    Union和Union All的区别
    外连接、内连接
    Linux 删除文件夹和文件的命令(强制删除包括非空文件)
    linux查看当前目录
    Linux chmod命令及权限含义
    MySQL的if,case语句
    case when
    java生成验证码图片
  • 原文地址:https://www.cnblogs.com/zyizyizyi/p/2535547.html
Copyright © 2011-2022 走看看