回《【开源】EFW框架系列文章索引》       

EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0

EFW框架实例源代码下载:http://pan.baidu.com/s/1eQCc69G

在《二十五、EFW框架Winform前端开发之自定义控件》中列出了EFW框架中的强大自定义控件及每个控件的API说明,但是对如何使用这些控件还不是很明白,本章通过实例的方式详细说明GridBoxCard控件的使用方法;

本文要点:

1.实例功能说明

2.控件属性设置

3.编写后台代码

1.实例功能说明

效果图:

制作一个书单在网格中,点击“新增”按钮网格新增空白行,焦点定位在书籍名称列,并弹出下拉书籍目录,可以通过拼音五笔码过滤书籍,回车选定书籍添加到网格中,再选择下一本书籍,如此在网格中生成了一个自定义的书单。

2.控件属性设置

1)将工具栏中的GridBoxCard控件拖入窗体,并设置好网格的列;其中ReadOnly属性为false,打开Columns属性中“书籍名称”列的ReadOnly设置为false,其他的几列都设置为true;

2)设置GridBoxCard控件的一些自定义属性,特别是SelectionCards属性,点击添加一个成员,如果有多列需要绑定下拉网格,那么这里就要添加多个成员,此处只需要将“书籍名称“这列 绑定下拉网格;

3)需要设置DataGridViewSelectionCard成员的属性,其中BindColumnIndex为列索引,”书籍名称“此列的索引是1,所以此处设置为1。其中CardColumn属性指定下拉网格显示的列”code|编码|50,name|名称|auto“表示显示两列”编码“和”名称“。其中QueryFieldsString属性指定过滤网格数据的列名”name,pym,wbm“表示可以通过名称、拼音码、五笔码三个字段进行过滤书籍;

3.编写后台代码

1)构建数据源“书籍字典”

 //数据源
private DataTable GetData()
{
DataTable dt = new DataTable();
dt.Columns.Add("code");
dt.Columns.Add("name");
dt.Columns.Add("pym");
dt.Columns.Add("wbm");
dt.Columns.Add("price");
dt.Columns.Add("buydate"); dt.Rows.Add("", "人月神话", "rysh", "rysh", "12.00", "2014-02-21");
dt.Rows.Add("", "浪潮之巅", "lczd", "lczd", "12.00", "2014-03-11");
dt.Rows.Add("", "人件", "rj", "rj", "12.00", "2014-08-01");
dt.Rows.Add("", "面向对象设计", "mxdxsj", "mxdxsj", "12.00", "2014-12-01");
dt.Rows.Add("", "架构之美", "jgzm", "jzzm", "12.00", "2014-12-21");
dt.Rows.Add("", "设计原本", "sjyb", "sjyb", "12.00", "2014-05-21");
dt.Rows.Add("", "敏捷项目管理", "mjxmgl", "mjxmgl", "12.00", "2014-01-11");
dt.Rows.Add("", "代码之美", "dmzm", "dmzm", "12.00", "2014-04-21");
dt.Rows.Add("", "大道至简", "dzzj", "ddzj", "12.00", "2014-01-01");
dt.Rows.Add("", "走出软件作坊", "zcrjzh", "zcfjzh", "22.00", "2014-02-11"); return dt;
}

2)控件绑定数据源,分别给控件的DataSource和控件列的下拉网格绑定数据源

private void Form1_Load(object sender, EventArgs e)
{
DataTable dtsource = GetData().Clone();
//绑定数据源
gridBoxCard1.DataSource = dtsource;
//绑定下拉网格数据源
gridBoxCard1.BindSelectionCardDataSource(, GetData().Copy());
}

3)点击“新增”开始编辑网格数据

//新增
private void button1_Click(object sender, EventArgs e)
{
gridBoxCard1.AddRow();
}

4)选定下拉网格数据赋值给网格控件

//选定下拉网格行,数据赋值
private void gridBoxCard1_SelectCardRowSelected(object SelectedValue, ref bool stop, ref int customNextColumnIndex)
{
DataTable dt = (DataTable)this.gridBoxCard1.DataSource;
int rowindex = gridBoxCard1.CurrentCell.RowIndex;
dt.Rows[rowindex]["code"] = ((DataRow)SelectedValue)["code"];
dt.Rows[rowindex]["name"] = ((DataRow)SelectedValue)["name"];
dt.Rows[rowindex]["price"] = ((DataRow)SelectedValue)["price"];
dt.Rows[rowindex]["buydate"] = ((DataRow)SelectedValue)["buydate"];
}

      总结:此控件适合于直接在网格中编辑数据的功能,下拉网格数据来源字典数据,这样用户操作起来非常直观;控件简化了对网格操作控制的代码,特别是列绑定下拉网格不需要过多代码,只要设置几个属性就行了;

【开源EFW框架】框架中自定义控件GridBoxCard使用实例说明的更多相关文章

  1. 开源物联网通讯框架ServerSuperIO,成功移植到Windows10 IOT,在物联网和集成系统建设中降低成本。附:“物联网”交流大纲

    [开源]C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 一.概述 经过一个多月晚上的时间,终于把开源物联网通讯框架ServerSuperIO成功移植到Windows10 IOT上, ...

  2. 十八、【开源】EnterpriseFrameWork框架核心类库之Winform控制器

    回<[开源]EnterpriseFrameWork框架系列文章索引> EFW框架源代码下载:http://pan.baidu.com/s/1qWJjo3U EFW框架中的WinContro ...

  3. Quartz.net 开源job调度框架(二)----定点执行

    在上一篇  Quartz.net 开源job调度框架(一) 中讲到了基本的使用以及配置job轮训数据执行 这种做法适用于对数据操作实时性要求不高的场景,在实际场景中还有一种比较常用的场景就是我们需要在 ...

  4. 【开源】OSharp框架解说系列(1):总体设计及系列导航

    系列文章导航 [开源]OSharp框架解说系列(1):总体设计 [开源]OSharp框架解说系列(2.1):EasyUI的后台界面搭建及极致重构 [开源]OSharp框架解说系列(2.2):EasyU ...

  5. Quartz.net 开源job调度框架(一)

    Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等. Quartz.NET允许开发人员根据时间间隔(或天)来调度作业.它实现了作业和 ...

  6. 开源实体映射框架EmitMapper介绍

    开源实体映射框架EmitMapper介绍   综述       EmitMapper是一个开源实体映射框架,地址:http://emitmapper.codeplex.com/.       Emit ...

  7. 八款你不得不知的开源前端JS框架

    angular.js Angular.JS是一个开源的JavaScript框架,最适于开发客户端的单页面应用.它实现了前端MVC架构,专注于扩展HTML功能,提供动态数据绑定(Data Binding ...

  8. [转]玩转Google开源C++单元测试框架Google Test系列

    gtest的官方网站是: http://code.google.com/p/googletest/ 从官方的使用文档里,你几乎可以获得你想要的所有东西 http://code.google.com/p ...

  9. 推荐GitHub上10 个开源深度学习框架

    推荐GitHub上10 个开源深度学习框架   日前,Google 开源了 TensorFlow(GitHub),此举在深度学习领域影响巨大,因为 Google 在人工智能领域的研发成绩斐然,有着雄厚 ...

随机推荐

  1. Why we need template on Django ?

    Let's create a simple website by django ... step01: django-admin startproject x01 step02: cd x01 ls ...

  2. paip.web数据绑定 下拉框的api设计 选择框 uapi python .net java swing jsf总结

    paip.web数据绑定 下拉框的api设计 选择框 uapi  python .net java swing jsf总结 ====总结: 数据绑定下拉框,Uapi 1.最好的是默认绑定..Map(k ...

  3. paip.java c# .net php python调用c++ c dll so windows api 总结

    paip.java c# .net  php python调用c++ c dll so windows api 总结 作者Attilax  艾龙,  EMAIL:1466519819@qq.com 来 ...

  4. jQuery自动分页打印表格(HTMLtable),可以强制换页

    最近做项目的时候需要做批量打印订单,一个订单可能在最后一页是的内容是不足一页的,这时候下一个订单需要下一页打印,这样就需要强制换页.在下一页再打印下一个订单 部分代码: 部分重要的css是分页的换页的 ...

  5. 一个映射到mac风格按键的AHK脚本(替换虚拟机键盘映射)

    Mac键位映射(部分) win+q 退出程序 win+w 关闭当前页面 win+h 隐藏当前窗口 win+shift+h 隐藏其他窗口 win+s 保存 win+o 打开 win+z 撤销 win+s ...

  6. P2P的原理和常见的实现方式(为libjingle开路)

    参考原文 为了项目的IM应用,最近在研究libjingle,中间看了也收集了很多资料,感慨网上很多资料要么太过于纠结协议(如STUN.ICE等)实现细节,要么中间有很多纰漏.最后去伪存真,归纳总结了一 ...

  7. Objective-C 语法之 static 关键字

    转:http://www.apkbus.com/android-593-1.html 学习过Java 或者 C 语言的朋友应该很清楚static关键字吧?在某个类中声明一个static 静态变量, 其 ...

  8. android sdk

    android sdk 网站 为什么google 的网站都上不去. http://www.androiddevtools.cn/

  9. Android中GPS类及方法简介

    GPS是Global Positioning System(全球定位系统)的简称,它的作用就是为全球的物体提供定位功能.GPS定位是一门高新技术,但对于Android程序员来说,开发GPS功能的应用程 ...

  10. HBase、Redis、MongoDB、Couchbase、LevelDB主流 NoSQL 数据库的对比

    最近小组准备启动一个 node 开源项目,从前端亲和力.大数据下的IO性能.可扩展性几点入手挑选了 NoSql 数据库,但具体使用哪一款产品还需要做一次选型. 我们最终把选项范围缩窄在 HBase.R ...