datagridview单元格内容自动匹配下拉显示.docx

上传人:b****8 文档编号:9020841 上传时间:2023-02-02 格式:DOCX 页数:10 大小:68.82KB
下载 相关 举报
datagridview单元格内容自动匹配下拉显示.docx_第1页
第1页 / 共10页
datagridview单元格内容自动匹配下拉显示.docx_第2页
第2页 / 共10页
datagridview单元格内容自动匹配下拉显示.docx_第3页
第3页 / 共10页
datagridview单元格内容自动匹配下拉显示.docx_第4页
第4页 / 共10页
datagridview单元格内容自动匹配下拉显示.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

datagridview单元格内容自动匹配下拉显示.docx

《datagridview单元格内容自动匹配下拉显示.docx》由会员分享,可在线阅读,更多相关《datagridview单元格内容自动匹配下拉显示.docx(10页珍藏版)》请在冰豆网上搜索。

datagridview单元格内容自动匹配下拉显示.docx

datagridview单元格内容自动匹配下拉显示

DataGridView单元格内容自动匹配下拉显示

Author:

很有意思

页面显示数据使用的控件是ComponentFactory.Krypton.Toolkit中的KryptonDataGridView控件。

在指定“商品”单元格中需要根据用户输入内容自动匹配数据库中商品信息,并且单元格处于编辑模式时显示一个查询图标的按钮,点击该按钮也将显示数据库中所有商品信息。

KryptonDataGridView显示控件此处命名为kDGVIndentDetail;

用于下拉显示匹配内容的DataGridView命名为dgv;

1、建立一个DataGridView类型的页面变量用于KryptonDataGridView单元格下拉显示匹配结果

//新建变量用于下拉显示的数据控件

DataGridViewdgv=newDataGridView();

//保存当前编辑单元格的坐标

privateint_colindex;//列索引

privateint_rowindex;//行索引

2、页面Load事件中设置dgv初始属性和添加一个单元格单击事件,提取为方法:

//设置下拉显示控件的属性

privatevoid_SetDGVDrop()

{

//初始为不可见并且只读

dgv.Visible=false;

dgv.ReadOnly=true;

dgv.Height=100;

//单元格选择模式为正行选择

dgv.SelectionMode=DataGridViewSelectionMode.FullRowSelect;

dgv.MultiSelect=false;//只用单行选择

dgv.ColumnHeadersVisible=false;//隐藏列头

//设置列宽

dgv.AutoSizeColumnsMode=DataGridViewAutoSizeColumnsMode.AllCells;

dgv.BackgroundColor=Color.FromName("window");

dgv.RowHeadersVisible=false;//隐藏行头

dgv.ScrollBars=ScrollBars.Vertical;//滚动条模式

dgv.AllowUserToAddRows=false;//禁止添加新行

dgv.AllowUserToDeleteRows=false;

dgv.AllowUserToOrderColumns=false;

dgv.AllowUserToResizeColumns=false;

dgv.AllowUserToResizeRows=false;

dgv.BackgroundColor=Color.White;

//设置单元格边框样式

dgv.AdvancedCellBorderStyle.Left=DataGridViewAdvancedCellBorderStyle.None;

dgv.AdvancedCellBorderStyle.Right=DataGridViewAdvancedCellBorderStyle.Single;

dgv.AdvancedCellBorderStyle.Bottom=DataGridViewAdvancedCellBorderStyle.None;

dgv.AdvancedCellBorderStyle.Top=DataGridViewAdvancedCellBorderStyle.None;

//添加单元格鼠标单击事件

dgv.CellMouseClick+=newDataGridViewCellMouseEventHandler(dgv_CellMouseClick);

//向明细单显示控件中加入该下拉控件

kDGVIndentDetail.Controls.Add(dgv);

}

dgv的单元格单击事件:

//下拉显示控件单元格双击事件,获得选择值并赋值给当前单元格

voiddgv_CellMouseClick(objectsender,DataGridViewCellMouseEventArgse)

{

DataGridViewdgv=(DataGridView)sender;

KryptonDataGridViewkdgv=(KryptonDataGridView)dgv.Parent;

kdgv[_colindex,_rowindex].Value=dgv.CurrentRow.Cells["aa"].Value;

//隐藏KryptonDataGridView

dgv.Visible=false;

//结束编辑,以显示选择结果值

kDGVIndentDetail.EndEdit();

}

3、数据显示控件kDGVIndentDetail的商品列(colProId)类型为:

KryptonDataGridViewTextBoxCell,在列的ButtonSpecs属性中添加一个buttonSpecAny名称为buttonSpecAny4,设置buttonSpecAny4的图片:

4、buttonSpecAny4的单击事件中显示下拉显示控件并调用控件的绑定事件:

privatevoidbuttonSpecAny4_Click(objectsender,EventArgse)

{

//点击可查询

//MessageBox.Show("点击查询:

"+buttonSpecAny4.Owner.GetType());

KryptonDataGridViewTextBoxCellkdcell=(KryptonDataGridViewTextBoxCell)buttonSpecAny4.Owner;

BindDGV("");

Rectanglerect=kDGVIndentDetail.GetCellDisplayRectangle(kdcell.ColumnIndex,kdcell.RowIndex,false);

_colindex=kdcell.ColumnIndex;

_rowindex=kdcell.RowIndex;

//设置显示控件的位置

dgv.Left=rect.Left;

dgv.Top=rect.Top+kdcell.Size.Height;

dgv.Visible=true;

}

当单元格为编辑状态时,buttonSpecAny4按钮将显示,点击该按钮下拉控件显示所有数据,点击控件的某一列,将把指定的值赋给当前编辑的单元格(这里只取选中行[“aa”]列的值)

5、dgv的绑定方法:

(为避免连接数据库,这里使用手工填充数据的方法)

//绑定下拉显示控件

privatevoidBindDGV(stringstr)

{

//填充数据源

DataTabledt=newDataTable();

dt.Columns.Add("aa");

dt.Columns.Add("bb");

dt.Columns.Add("cc");

dt.Columns.Add("ee");

DataRowdr=null;

for(inti=0;i<5;i++)

{

dr=dt.NewRow();

dr["aa"]=str+"aa"+i;

dr["bb"]=str+"bb"+i;

dr["cc"]=str+"cc"+i;

dr["ee"]=str+"ee"+i;

dt.Rows.Add(dr);

}

//绑定数据源

dgv.DataSource=dt;

}

6、现在实现在单元格直接输入内容时自动配备显示数据库中的内容,在kDGVIndentDetail显示控件的EditingControlShowing事件中处理:

//单元格启用编辑时

privatevoidkDGVIndentDetail_EditingControlShowing(objectsender,DataGridViewEditingControlShowingEventArgse)

{

//MessageBox.Show(""+sender.GetType().ToString());

KryptonDataGridViewkdgv=(KryptonDataGridView)sender;

if(e.Control.GetType().Equals(typeof(KryptonDataGridViewTextBoxEditingControl)))//cell类型

{

KryptonDataGridViewTextBoxEditingControlkcell=e.ControlasKryptonDataGridViewTextBoxEditingControl;

//MessageBox.Show(kcell.TextBox.Name);

//获取列名

//MessageBox.Show(kdgv.Columns[kdgv.CurrentCell.ColumnIndex].Name);

if(kdgv.Columns[kdgv.CurrentCell.ColumnIndex].Name=="colProId")//此列为显示商品代码的列

{

//添加按键事件

kcell.TextChanged+=newEventHandler(kcell_TextChanged);

}

}

}

TextChanged事件中根据用户数据内容动态匹配

voidkcell_TextChanged(objectsender,EventArgse)

{

KryptonDataGridViewTextBoxEditingControlkdgvtbox=(KryptonDataGridViewTextBoxEditingControl)sender;

//MessageBox.Show(kdgvtbox.Text);

if(kDGVIndentDetail.Columns[kDGVIndentDetail.CurrentCell.ColumnIndex].Name=="colProId")

{

BindDGV(kdgvtbox.Text);

_colindex=kDGVIndentDetail.CurrentCell.ColumnIndex;

_rowindex=kDGVIndentDetail.CurrentCell.RowIndex;

Rectanglerect=kDGVIndentDetail.GetCellDisplayRectangle(_colindex,_rowindex,false);

//设置显示控件的位置

dgv.Left=rect.Left;

dgv.Top=rect.Top+kdgvtbox.Size.Height;

dgv.Visible=true;

}

}

7、滚动kDGVIndentDetail和改变列宽时,隐藏下拉显示控件

privatevoidkDGVIndentDetail_ColumnWidthChanged(objectsender,DataGridViewColumnEventArgse)

{

//隐藏下拉显示控件

dgv.Visible=false;

}

privatevoidkDGVIndentDetail_Scroll(objectsender,ScrollEventArgse)

{

//隐藏下拉显示控件

dgv.Visible=false;

}

暂且写到这里,还需要在使用中调试修改,下面是效果图:

单击单元格进入编辑模式时,查询按钮显示(放大镜)

输入内容时显示匹配内容。

点击放大镜显示所有内容

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 金融投资

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1