首页
学习
活动
专区
圈层
工具
发布

Excel催化剂开源第13波-VSTO开发之DataGridView控件几个小坑

用DataGridView最有优势之处在于,可以直接让DataTable直接绑定即可,同时带有丰富的事件可与用户交互,并且保留有用户常用的排序功能,筛选功能也容易实现,用Dataview来绑定数据源即可...使用DataGridView的一些小坑 DataGridView内复选框状态改变激活事件 在Excel催化剂的【工作表导航】功能中,有用到DataGridView存储工作表信息,需要和用户交互的是用户点击复选框...> /// 这个为了让复选框可以单击时产生变化而用的。...} } DataGridView的行手工排序问题 DataGridView原生功能没有实现通过按住某行拖动的方式实现不同行之间的排序问题。...在Excel催化剂上的使用场景为,对工作表的手工排序操作。

1.4K50

DataGridView控件用法一:数据绑定

在绑定到包含多个列表或表的数据源时,只需将DataMember属性设置为指定要绑定的列表或表的字符串即可。...一、非绑定模式 所谓的非绑定模式就是DataGridView控件显示的数据不是来自于绑定的数据源,而是可以通过代码手动将数据填充到DataGridView控件中,这样就为DataGridView控件增加了很大的灵活性...与基于文本的值一起使用,在绑定到数字和字符串类型的值时自动生成 DataGridViewCheckBoxColumn 与boolean和checkState值一起使用,在绑定到这些类型的值时自动生成...在绑定到包含多个列表或表的数据源时,只需将DataMember属性设置为指定要绑定的列表或表的字符串即可。....DataSource=dict; 第七种:可以排序 DataView dv=new DataView(); this.dataGridView1.DataSource=dv; 示例程序: 下面的程序中

4.7K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    在DataGridView控件中加入ComboBox下拉列表框的实现

    本文介绍一种只在当前编辑单元格中显示下拉列表框的方法,供大家参考。   ...(或者数据集),然后绑定到DataGridView中的,这里我们为了避免连接数据库,手中构造一个数据库表,代码如下: private void BindData() {     DataTable dtData...控件中     this.dgv_User.Controls.Add(cmb_Temp); }   当用户选择的单元格移动到性别这一列时,我们要显示下拉列表框,添加如下事件 private void dgv_User_CurrentCellChanged...= "";     } }   当滚动DataGridView或者改变DataGridView列宽时将下拉列表框设为不可见 private void dgv_User_Scroll(object sender...{             this.cmb_Temp.Visible = false;         }         // 绑定数据表后将性别列中的每一单元格的Value和Tag属性(Tag为值文本

    4.8K20

    【转】基于C#的WinForm中DataGridView控件操作汇总

    e) { DataGridView dgv = (DataGridView)sender; //单元格列为“Column1”时 if (dgv.Columns[e.ColumnIndex...********DataGridView 判断新增行: DataGridView的AllowUserToAddRows属性为True时也就是允许用户追加新行的场合下,DataGridView的最后一行就是新追加的行...如果设置 DataGridView对象的AllowUserToDeleteRows属性为 False 时, 用户的行删除操作就被禁止了。 // 禁止DataGridView1的行删除操作。...******DataGridView 冻结列或行 1) 列冻结 DataGridViewColumn.Frozen 属性为 True 时, 该列左侧的所有列被固定, 横向滚动时固定列不随滚动条滚动而左右移动...; // 当"Column1"列是Bool型且为True时、设定其的ContextMenuStrip object boolVal = dgv["Column1", e.RowIndex

    6.1K50

    c# WinForm开发 DataGridView控件的各种操作总结(单元格操作,属性设置)

    e) { DataGridView dgv = (DataGridView)sender; //单元格列为“Column1”时 if (dgv.Columns[e.ColumnIndex...********DataGridView 推断新增行: DataGridView的AllowUserToAddRows属性为True时也就是同意用户追加新行的场合下,DataGridView的最后一行就是新追加的行...假设设置 DataGridView对象的AllowUserToDeleteRows属性为 False 时, 用户的行删除操作就被禁止了。 // 禁止DataGridView1的行删除操作。...******DataGridView 冻结列或行 1) 列冻结 DataGridViewColumn.Frozen 属性为 True 时, 该列左側的全部列被固定, 横向滚动时固定列不随滚动栏滚动而左右移动...; // 当”Column1″列是Bool型且为True时、设定其的ContextMenuStrip object boolVal = dgv[“Column1”, e.RowIndex

    5.4K10

    DataGridView的DataGridViewComboBoxColumn列点击一次,自动处于编辑状态

    本文转载:http://www.cnblogs.com/Johnny_Z/archive/2012/02/12/2348235.html Winform中的DataGridView数据绑定控件有时会用到...这使操作变得很麻烦,降低了易用性,尤其是在程序部署在一些小型设备或者触摸屏设备上时,则更为不便。下面介绍两种方法解决这个问题。...首先,我们创建一个Windows应用程序,在窗体中拖拽一个DataGridView控件,命名为dataGridView。要确保该控件的“启用编辑”选项勾选。下面我们动态创建列,以及添加一行数据。...方法一: 在DataGridView控件的CellClick事件中添加如下代码: CellClick事件 private void dataGridView_CellClick(object sender...dgv = sender as DataGridView; if (dgv !

    3.2K11

    C#—— DataGridView控件的各种操作总结(单元格操作,属性设置)

    e) { DataGridView dgv = (DataGridView)sender; //单元格列为“Column1”时 if (dgv.Columns[e.ColumnIndex].Name...********DataGridView 判断新增行: DataGridView的AllowUserToAddRows属性为True时也就是允许用户追加新行的场合下,DataGridView的最后一行...如果设置 DataGridView对象的AllowUserToDeleteRows属性为 False 时, 用户的行删除操作就被禁止了。 // 禁止DataGridView1的行删除操作。...******DataGridView 冻结列或行 1) 列冻结 DataGridViewColumn.Frozen 属性为 True 时, 该列左侧的所有列被固定, 横向滚动时固定列不随滚动条滚动而左右移动...在该事件中处理除了可以设定默认值以外,还可以指定某些特定的单元格的ReadOnly属性等。

    13.1K32

    C#之二十三 打印和水晶报表

    本实例在打印某企业的员工信息时,实现了通过将数据导入到Word文档中进行打印的功能。运行本实例,如图所示,单击“输出Word“按钮,DataGridView控件中的数据便以Word文档方式打开。...实现过程 (1) 新建一个Windows应用程序,将其命名为Exll-03,默认主窗体为Forml; (2) 在Forml窗体中添加一个DataGridView控件和一个Button控件...,其中,DataGridView控件用来显示数据库中的记录,Button控件用来将DataGridView控件中的数据以Word文档格式输出; (3) 主要程序代码,在DataGridView控件中显示数据的实现代码如下...例如,下面的代码用来指定Excel工作薄中第一行第一列的单元格中的内容为“Excel”: 实现过程: (1) 新建一个Windows应用程序,默认主窗体为Form1. (2)...在Form1窗体中添加一个DataGridView控件和一个Button控件其中DataGridView控件用来显示数据库中的记录,Button控件用来将DataGridView控件中的数据以Excel

    1.6K00

    【C#】让DataGridView输入中实时更新数据源中的计算列

    本文适用Winform开发,且DataGridView的数据源为DataTable/DataView的情况。...DataGridView(下称dgv),A、B两列都要在dgv中显示,其中A列可编辑(ReadOnly=false)。...需求是对A列进行编辑时(输入或删除),B列能实时变化。例如下面的例子: ? 【目标文件名】是根据【款号】和【色号】计算而来(连接字符串),当编辑款号/色号时,目标文件名能实时变化。...当dgv绑定数据源后,它的每一行就对应了数据源中的一行(或叫一项),这就是我所谓的【源行】。...可以通过DataGridViewRow.DataBoundItem属性获得,该属性类型是object,当dgv的数据源为DataTable或DataView(下称dv)时,DataBoundItem的真实类型就是

    6.5K20

    可视化数据库设计软件有哪些_数据库可视化编程

    (即表示对应DateSet的哪一个或些表) 7)Sort:如果数据源为 IBindingList,则获取或设置用于排序和排序顺序信息的列名。...如果数据源为 IBindingListView,并支持高级排序,则获取用于排序和排序顺序信息的多个列名。...–数据表中真实的字段值 4)DataBinding.SelectValue:选择主表中连接字段。 5)ComboBox控件 1.作用 作用1:用下拉列表方式显示数据表中某字段值。...2)DisplayMember:选择代码表中汉字字段。 3)ValueMember:选择代码表中连接字段。 4)DataBinding.SelectValue:选择主表中连接字段。...复选框为选中状态,则DataGridView控件允许对记录行进行增、删、改的操作。

    8.5K40

    C#如何快速高效地导出大量数据?

    代码如下 public static void DataGridViewToExcel(DataGridView dgv) { #region Validate...,它仅适合导出那些最多几百几千的数据量,当使用上述代码导出10万甚至20多万的海量数据时,至少几个小时甚至导出失败。。。。...经过几天的研究,本人发现上述导出的核心代码存在问题,导致速度缓慢,下边看看我修改后的程序: string saveFileName = ""; bool fileSaved =...,经过前后两种导出方式的对比,您会发现,导出的思想改变了: 原来的程序将数据一个表格一个表格地写入到EXCEL中;修改后的程序先将数据存入二维数组中,然后再将数组值赋予EXCEL应用程序对象的VALUE...还有一个要提醒大家,EXCEL中SHEET最多存储65535条数据,如果数据过多就需要增加sheet继续存储数据,关于如何使用,上边我修改过的代码中已经有详细的使用,请大家自己去看,这里不再重复。

    2.5K10

    Excel催化剂开源第23波-VSTO开发辅助录入功能关键技术

    在Excel催化剂的几大辅助录入功能中(数据验证保护、数据多级联动输入、关键词模糊智能匹配输入)中,用了一些customxmlPart技术来存储配置信息,同时在关键词模糊智能匹配输入中,用了一个VSTO...自定义控件,可直接用到工作表单元格中 具体实现原理 通过用户配置操作,将需要进行快速录入的区域记录下来,用SelectionChange事件来响应,若用户选择到这些单元格时,就激发事件方法,显示自定义控件...输入过程中动态控制下方DataGridView的查找结果,用户可以按方向箭下上在结果中选择对应的条目,再按Enter或Tab键确定内容录入。....Rows.Cast().Any(s => s.Selected); //当dgv有选择列时 if (isDgvSelected)...,使我们在上层构建业务代码时变得如此轻松,此篇给大家展示了在工作表单元格区域上创建自定义控件的能力,发挥得当,较直接弹出窗体的效果要友好得多。

    1.6K10

    【DB笔试面试645】在Oracle中,当收集表的统计信息时应该注意哪些问题?

    ♣ 题目部分 在Oracle中,当收集表的统计信息时应该注意哪些问题?...⑧ 内部对象统计信息:在明确诊断出系统已有的性能问题是因为X$表的内部对象统计信息不准引起的,这个时候就应该收集X$表的内部对象统计信息,其它情形就不要收集了。...如果表中的数据倾斜度较大,那么收集直方图能最大程度的帮助优化器计算出准确的Cardinality,从而避免产生差的执行计划;再进一步,如果存在倾斜的多个列共同构成了Predicate里的等值连接且这些列间存在较强的列相关性的话...如果设置为AUTO_INVALIDATE,那么Oracle自己决定Shared Cursor失效动作,当SQL再次执行时间距离上次收集统计信息的时间超过5小时(隐含参数“_OPTIMIZER_INVALIDATION_PERIOD...AUTO_INVALIDATE为默认选项。有些DBA在收集统计信息时,没有使用NO_INVALIDATE=>FALSE选项,所以,即使收集了统计信息,执行计划也不会立即改变。

    1.5K30
    领券