操作DataGridView控件详解.docx

上传人:b****3 文档编号:6810582 上传时间:2023-05-10 格式:DOCX 页数:16 大小:119.60KB
下载 相关 举报
操作DataGridView控件详解.docx_第1页
第1页 / 共16页
操作DataGridView控件详解.docx_第2页
第2页 / 共16页
操作DataGridView控件详解.docx_第3页
第3页 / 共16页
操作DataGridView控件详解.docx_第4页
第4页 / 共16页
操作DataGridView控件详解.docx_第5页
第5页 / 共16页
操作DataGridView控件详解.docx_第6页
第6页 / 共16页
操作DataGridView控件详解.docx_第7页
第7页 / 共16页
操作DataGridView控件详解.docx_第8页
第8页 / 共16页
操作DataGridView控件详解.docx_第9页
第9页 / 共16页
操作DataGridView控件详解.docx_第10页
第10页 / 共16页
操作DataGridView控件详解.docx_第11页
第11页 / 共16页
操作DataGridView控件详解.docx_第12页
第12页 / 共16页
操作DataGridView控件详解.docx_第13页
第13页 / 共16页
操作DataGridView控件详解.docx_第14页
第14页 / 共16页
操作DataGridView控件详解.docx_第15页
第15页 / 共16页
操作DataGridView控件详解.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

操作DataGridView控件详解.docx

《操作DataGridView控件详解.docx》由会员分享,可在线阅读,更多相关《操作DataGridView控件详解.docx(16页珍藏版)》请在冰点文库上搜索。

操作DataGridView控件详解.docx

操作DataGridView控件详解

在项目中,老程序员都知道显示数据的控件的操作灵活性很重要。

VisualStudio2008里面提供了一个很强大的数据显示控件------------DataGridView。

DataGridView与VB、VC中的DataGrid控件功能很相似,但比起更加强大,操作更灵活,废话不说了。

操作DataGridView有两种方式,一种是使用控件绑定的方式,操作的时候只要更改DataSet控件的数据集就能够实现DataGridView数据的灵活显示;另一种方式是全部使用代码来手工操作DataGridView控件的显示,尽量少用控件,使代码看起来更连贯,操作更灵活。

  控件方法来操作DataGridView控件:

 

 (控件方法略,比较简单,拖控件,绑定即可)

  代码方法来操作DataGridView控件

    通过上两节,老程序员对数据的简单操作已经很熟练了。

现在在第一个实例“helloword!

”的基础上,继续DataGridView控件的手工操作实习。

添加一个控件,文本命名如图:

   

  我们在上面看到的数据显示时这样的:

   

   列的头部是数据库表的列段名,因为我们是将SQL查询的数据集直接绑定到DataGridView控件的。

下来我们来改变它的头部,同时,来指定DataGridView控件各个列绑定的数据成员。

privatevoidbutton4_Click(objectsender,EventArgse)

{

//定义数据库连接字符

stringstr_con=@"DataSource=26-3B72903E783B\SQLEXPRESS;IntegratedSecurity=SSPI;InitialCatalog=testDB;";

 

//定义SQL语句字符串

stringsql="select*fromdanwei";

//stringsql=string.Format("insertintodanwei(danwei)values('{0}')",textBox1.Text);

//定义并实例化数据库连接类型变量

SqlConnectionconn=newSqlConnection(str_con);

 

//打开数据库连接

conn.Open();

 

 

SqlCommandcomm=newSqlCommand(sql,conn);

SqlDataAdapterda=newSqlDataAdapter(comm);

 

DataSetds=newDataSet();

da.Fill(ds,"danwei");

 

dataGridView1.DataSource=ds;

dataGridView1.DataMember="danwei";

//---------------以上代码可以直接拷贝button3的代码--------------------

 

//设置dataGridView1控件第一列的列头文字

dataGridView1.Columns[0].HeaderText="序号";

//设置dataGridView1控件第一列的列宽

dataGridView1.Columns[0].Width=80;

 

 

//设置dataGridView1控件第二列的列头文字

dataGridView1.Columns[1].HeaderText="单位";

//设置dataGridView1控件第二列绑定的数据集中第一个数据表的第二列的数据

//前面说了,ds数据集是一个多表的集合

dataGridView1.Columns[1].DataPropertyName=ds.Tables[0].Columns[1].ToString();

//设置dataGridView1控件第二列的列宽

dataGridView1.Columns[1].Width=300;

 

conn.Close();

}

    运行后,按下DataGridViewOpar按钮显示如下:

 

比较原来的;

   发现就是列头变了,以及下面的滚动条长了,其实数据绑定了。

可以将绑定值在代码中互换一下,再看看;

   上面代码改为:

privatevoidbutton4_Click(objectsender,EventArgse)

{

….//省略前面已有的代码

dataGridView1.Columns[0].HeaderText="序号";

dataGridView1.Columns[0].DataPropertyName=ds.Tables[0].Columns[1].ToString();

dataGridView1.Columns[0].Width=80;

 

dataGridView1.Columns[1].HeaderText="单位";

dataGridView1.Columns[1].DataPropertyName=ds.Tables[0].Columns[0].ToString();

dataGridView1.Columns[1].Width=300;

}

 

运行后:

 

 

 

   单位和序号的值就换位置了。

   

 

   自动添加序号:

    动态添加数据的时候,有时候读取数据库的数据ID号不是顺序的,这时就需要自己添加自动递增的序号。

如图:

   这里的序号不是序列的,中间跳了个2,做为统计到底有几个单位不直观。

我们添加一段代码:

privatevoidbutton4_Click(objectsender,EventArgse)

{

….//省略前面已有的代码

dataGridView1.Columns[0].HeaderText="序号";

//dataGridView1.Columns[0].DataPropertyName=ds.Tables[0].Columns[1].ToString();

dataGridView1.Columns[0].Width=80;

 

dataGridView1.Columns[1].HeaderText="单位";

//dataGridView1.Columns[1].DataPropertyName=ds.Tables[0].Columns[0].ToString();

//dataGridView1.Columns[1].Width=300;

 

//自动整理序列号

intcoun=dataGridView1.RowCount;

for(inti=0;i

{

dataGridView1.Rows[i].Cells[0].Value=i+1;

dataGridView1.Rows[i].Cells["danweiid"].Value=i+1;

}

//因为第一个列值被修改了,所以后面的列值索引就从0开始

//所以单位的值应该对应的是第0列

dataGridView1.Columns[0].DataPropertyName=ds.Tables[0].Columns[0].ToString();

}

运行后,显示:

 

 

 

综上,老程序员已经可以知道:

1, DataGridView控件如何用代码绑定数据集;

2, DataGridView控件如何如果将指定的列绑定到数据集里的指定数据列;

3, DataGridView控件如何动态编辑它的列值;

其实通过上面的实习,老程序员已经算很灵活的操作DataGridView了,不过为了在项目中更加顺手,老程序员通过查找资料和测试,整理了DataGridView控件的用法详解合集。

附录如下:

(以下代码在如下情况下配置:

添加一个ListBox控件,在里面显示获取到的值。

添加一个button3按钮控件,以下功能代码均在该按钮控件的Click事件下触发)

1,当前选择的的单元格属性取得、变更

privatevoidbutton3_Click(objectsender,EventArgse)

{

//当前选择的的单元格属性取得、变更

listBox1.Items.Add("当前选择的表格值(代码:

dataGridView1.CurrentCell.Value)="+dataGridView1.CurrentCell.Value);

listBox1.Items.Add("当前选择的表格值(代码:

dataGridView1.CurrentCell.ColumnIndex)="+dataGridView1.CurrentCell.ColumnIndex);

listBox1.Items.Add("当前选择的表格值(代码:

dataGridView1.CurrentCell.RowIndex)="+dataGridView1.CurrentCell.RowIndex);

//设置[1,1]单元格为当前选择的单元格

dataGridView1.CurrentCell=dataGridView1[1,1];

listBox1.Items.Add("当前选择的表格值(代码:

dataGridView1.CurrentCell.RowIndex)="+dataGridView1.CurrentCell);

}

运行时,需要先按DataGridViewOpar,它会创建DataGridView数据视图实例,然后再按DataGridViewOparGather按钮。

2,DataGridView编辑属性

//全部单元格只读

dataGridView1.ReadOnly=true;

//指定行列单元格只读

dataGridView1.Columns[1].ReadOnly=true;

dataGridView1.Rows[2].ReadOnly=true;

dataGridView1[0,0].ReadOnly=true;

//编辑指定单元格

privatevoiddataGridView1_CellBeginEdit(objectsender,

DataGridViewCellCancelEventArgse)

{

stringmsg=String.Format("编辑表格({0},{1})",

e.ColumnIndex,e.RowIndex);

this.Text=msg;

}

 

privatevoiddataGridView1_CellEndEdit(objectsender,

DataGridViewCellEventArgse)

{

stringmsg=String.Format("完成编辑({0},{1})",

e.ColumnIndex,e.RowIndex);

this.Text=msg;

}

3,DataGridView禁止用户追加新行

dataGridView1.AllowUserToAddRows=false;

4,判断当前选中行是否为新追加的行

if(dataGridView1.CurrentRow.IsNewRow=true)

{

MessageBox.Show("你选定的是新行");

}

5,DataGridView设定删除行

//允许用户删除行操作

dataGridView1.AllowUserToDeleteRows=true;

//双击DataGridView属性框中事件列表中的以下两个事件,添加代码如下

//提示是否删除指定行数据

privatevoiddataGridView1_UserDeletingRow(objectsender,DataGridViewRowCancelEventArgse)

{

DialogResultdiaR=MessageBox.Show("是否删除该行?

","确认",MessageBoxButtons.OKCancel,MessageBoxIcon.Question);

if(diaR==DialogResult.OK)

{

e.Cancel=false;

}

}

//提示删除了哪一行数据

privatevoiddataGridView1_UserDeletedRow(objectsender,DataGridViewRowEventArgse)

{

System.Text.StringBuildermessageBoxCS=newSystem.Text.StringBuilder();

messageBoxCS.AppendFormat("{0}={1}","行号为",e.Row);

messageBoxCS.AppendLine();

DialogResultdiaR=MessageBox.Show("删除了"+messageBoxCS.ToString(),"确认");

}

6,设置不显示指定行,设置删除选定的行或列

//显示指定行或列

dataGridView1.Columns[0].Visible=false;

dataGridView1.Rows[0].Visible=false;

dataGridView1.ColumnHeadersVisible=false;

dataGridView1.RowHeadersVisible=false;

 

//删除指定行

dataGridView1.Columns.Remove("danwei");

dataGridView1.Columns.RemoveAt(0);

dataGridView1.Rows.RemoveAt(0);

//删除选定的多行

foreach(DataGridViewRowrindataGridView1.SelectedRows)

{

if(r.IsNewRow==false)

{

dataGridView1.Rows.Remove(r);

}

}

7,取得选定的行、列、单元格

//选定的单元格

foreach(DataGridViewCellcindataGridView1.SelectedCells)

{

stringcr=string.Format("{0},{1}",c.ColumnIndex,c.RowIndex);

listBox1.Items.Add("选定的单元格位置是:

"+cr);

}

//选定的行/列

foreach(DataGridViewRowcindataGridView1.SelectedRows)

{

listBox1.Items.Add("选定的行是:

"+c.RowIndex);

}

foreach(DataGridViewColumncindataGridView1.SelectedColumns)

{

listBox1.Items.Add("选定的列是:

"+c.ColumnIndex);

}

//指定选定单元格

dataGridView1[0,0].Selected=true;

dataGridView1.Rows[0].Selected=true;

dataGridView1.Columns[0].Selected=true;

 

//设置行首和左上角的文字

dataGridView1.Rows[0].HeaderCell.Value="第1行";

dataGridView1.TopLeftHeaderCell.Value="左上角";

8,手动追加列

//手动追加列

dataGridView1.AutoGenerateColumns=false;

dataGridView1.DataSource=ds;

DataGridViewTextBoxColumntxtCol=newDataGridViewTextBoxColumn();

txtCol.DataPropertyName="danwei";

txtCol.Name="col1";

txtCol.HeaderText="单位";

dataGridView1.Columns.Add(txtCol);

9,单元格内输入值正确性判断

在DataGridView控件的属性处,选择以下事件。

错误文本请求:

privatevoiddataGridView1_CellErrorTextNeeded(objectsender,DataGridViewCellErrorTextNeededEventArgse)

{

if((dataGridView1.Columns[e.ColumnIndex].Name=="ID")&&(dataGridView1.Columns["ID"].ToString()==""))

{

dataGridView1.Rows[e.RowIndex].ErrorText="值类型错误";

}

}

输入值有效性检查:

privatevoiddataGridView1_CellValidated(objectsender,DataGridViewCellEventArgse)

{

dataGridView1.Rows[e.RowIndex].ErrorText="输入值无效";

}

10,列中显示选择框控件CheckBox

//列中显示选择框CheckBox

DataGridViewCheckBoxColumncolumn1=newDataGridViewCheckBoxColumn();

{

column1.HeaderText="选择框";

column1.Name="checkbox";

column1.AutoSizeMode=

DataGridViewAutoSizeColumnMode.DisplayedCells;

column1.FlatStyle=FlatStyle.Standard;

//显示选择框的三种状态

column1.ThreeState=true;

}

dataGridView1.Columns.Add(column1);

11,插入新的一列到指定单元格列

//插入新的一列到指定单元格列

dataGridView1.Columns.Insert(3,column1);

12,单元格添加下拉框

//单元格添加下拉框

DataGridViewComboBoxColumndcombo=newDataGridViewComboBoxColumn();

dcombo.Items.Add("中国");

dcombo.Items.Add("美国");

dcombo.Items.Add("德国");

dcombo.Items.Add("日本");

dcombo.Items.Add("英国");

dcombo.Items.Add("法国");

dcombo.Name="combo";

//显示的位置列

//dcombo.DisplayIndex=1;

dcombo.HeaderText="国家";

//绑定数据库的值时使用以下属性

//dcombo.DataPropertyName="danwei";

dataGridView1.Columns.Add(dcombo);

 

以上显示的下拉框,选择时需要点击三次,第一次选中单元格,第二次启用编辑,第三次打开下拉框。

如果需要一次点击打开下拉框,可以启用DataGridView的事件CellEnter();

代码如下:

privatevoiddataGridView1_CellEnter(objectsender,DataGridViewCellEventArgse)

{

//实现单击显示列表框

if(dataGridView1.Columns[e.ColumnIndex]isDataGridViewComboBoxColumn&&e.RowIndex!

=-1)

{

SendKeys.Send("{F4}");

}

}

13,单元格显示按钮控件和显示超级链接

同上,只不过使用的类为:

DataGridViewButtonColumndbotton;

相关代码:

//显示按钮控件

DataGridViewButtonColumncol=newDataGridViewButtonColumn();

col.Name="Button";

col.UseColumnTextForButtonValue=true;

col.Text="按钮";

dataGridView1.Columns.Add(col);

触发的事件为:

privatevoiddataGridView1_CellContentClick(objectsender,DataGridViewCellEventArgse)

{

if(dataGridView1.Columns[e.ColumnIndex].Name=="Button")

{

MessageBox.Show("触发了按钮");

}

}

 

 

超级链接是:

DataGridViewLinkColumn

连接代码同上。

单元格列显示图像的是:

DataGridViewImageColumn

代码如下:

//显示图像

DataGridViewImageColumndgvI=newDataGridViewImageColumn();

dgvI.Name="Image";

dgvI.ValuesAreIcons=false;

dgvI.Image=newBitmap("c:

\\windows\\BlueLace16.bmp");

dgvI.ImageLayout=DataGridViewImageCellLayout.Zoom;

dgvI.Description="测试的图片";

dataGridView1.Columns.Add(dgvI);

dataGridView1["Image",0].Value=newBitmap("c:

\\windows\\BlueLace16.bmp");

 

 

等等,用法都是相同的。

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

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2