您的位置:首页 > 其它

DataGridView的一些技巧【转载】

2011-07-23 21:26 351 查看
DataGridView的一些技巧

[align=left]最近一直跟DataGridView打交道,突然觉得很多技巧性的东西很模糊,经过最近的个人实验操作和从网上查到的资料
把对DataGridView操作的一些技巧总结和借鉴了一下,总结如下:

1、自定义列
[/align]
[align=left] Customize Cells and Columns in the Windows Forms DataGridView Control by Extending Their[/align]
[align=left] Behavior and Appearance[/align]
[align=left] Host Controls in Windows Forms DataGridView Cells[/align]
[align=left] 继承 DataGridViewTextBoxCell 类生成新的Cell类,然后再继承 DataGridViewColumn 生成新的Column类,并指定[/align]
[align=left] CellTemplate为新的Cell类。新生成的Column便可以增加到DataGridView中去。[/align]
[align=left]2、自动适应列宽[/align]
[align=left] Programmatically Resize Cells to Fit Content in the Windows Forms DataGridView Control[/align]
[align=left] Samples:[/align]
[align=left] DataGridView.AutoSizeColumns([/align]
[align=left] DataGridViewAutoSizeColumnCriteria.HeaderAndDisplayedRows);[/align]
[align=left] DataGridView.AutoSizeColumn([/align]
[align=left] DataGridViewAutoSizeColumnCriteria.HeaderOnly,[/align]
[align=left] 2, false);[/align]
[align=left] DataGridView.AutoSizeRow([/align]
[align=left] DataGridViewAutoSizeRowCriteria.Columns,[/align]
[align=left] 2, false);[/align]
[align=left] DataGridView.AutoSizeRows([/align]
[align=left] DataGridViewAutoSizeRowCriteria.HeaderAndColumns,[/align]
[align=left] 0, dataGridView1.Rows.Count, false);[/align]
[align=left]3、可以绑定并显示对象[/align]
[align=left] Bind Objects to Windows Forms DataGridView Controls[/align]
[align=left]4、可以改变表格线条风格[/align]
[align=left] Change the Border and Gridline Styles in the Windows Forms DataGridView Control[/align]
[align=left] Samples:[/align]
[align=left] this.dataGridView1.GridColor = Color.BlueViolet;[/align]
[align=left] this.dataGridView1.BorderStyle = BorderStyle.Fixed3D;[/align]
[align=left] this.dataGridView1.CellBorderStyle = DataGridViewCellBorderStyle.None;[/align]
[align=left] this.dataGridView1.RowHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single;[/align]
[align=left] this.dataGridView1.ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single;[/align]
[align=left]5、动态改变列是否显示,和动态改变列的显示顺序[/align]
[align=left] Change the Order of the Columns in the Windows Forms DataGridView Control[/align]
[align=left] Samples:[/align]
[align=left] customersDataGridView.Columns["CustomerID"].Visible = false;[/align]
[align=left] customersDataGridView.Columns["ContactName"].DisplayIndex = 0;[/align]
[align=left] customersDataGridView.Columns["ContactTitle"].DisplayIndex = 1;[/align]
[align=left] customersDataGridView.Columns["City"].DisplayIndex = 2;[/align]
[align=left] customersDataGridView.Columns["Country"].DisplayIndex = 3;[/align]
[align=left] customersDataGridView.Columns["CompanyName"].DisplayIndex = 4;[/align]
[align=left]6、可以在列中显示图像[/align]
[align=left] Display Images in Cells of the Windows Forms DataGridView Control[/align]
[align=left] Samples:[/align]
[align=left] Icon treeIcon = new Icon(this.GetType(), "tree.ico");[/align]
[align=left] DataGridViewImageColumn iconColumn = new DataGridViewImageColumn ();[/align]
[align=left] iconColumn.Image = treeIcon.ToBitmap();[/align]
[align=left] iconColumn.Name = "Tree";[/align]
[align=left] iconColumn.HeaderText = "Nice tree";[/align]
[align=left] dataGridView1.Columns.Insert(2, iconColumn);[/align]
[align=left]7、格式化显示内容:[/align]
[align=left] Format Data in the Windows Forms DataGridView Control[/align]
[align=left] Samples:[/align]
[align=left] this.dataGridView1.Columns["UnitPrice"].DefaultCellStyle.Format = "c";[/align]
[align=left] this.dataGridView1.Columns["ShipDate"].DefaultCellStyle.Format = "d";[/align]
[align=left] this.dataGridView1.DefaultCellStyle.NullValue = "no entry";[/align]
[align=left] this.dataGridView1.DefaultCellStyle.WrapMode = DataGridViewWrapMode.Wrap;[/align]
[align=left] this.dataGridView1.Columns["CustomerName"].DefaultCellStyle.Alignment =[/align]
[align=left] DataGridViewContentAlignment.MiddleRight;[/align]
[align=left] [/align]
[align=left]8、在拖动列的滚动条时可以将指定的列冻结[/align]
[align=left] Freeze Columns in the Windows Forms DataGridView Control[/align]
[align=left] Samples:将指定列及以前的列固定不动[/align]
[align=left] this.dataGridView1.Columns["AddToCartButton"].Frozen = true;[/align]
[align=left]9、获取选择的单元格,行,列[/align]
[align=left] Get the Selected Cells, Rows, and Columns in the Windows Forms DataGridView Control[/align]
[align=left] Samples:[/align]
[align=left] 见msdn。[/align]
[align=left]10、显示录入时出现的错误信息[/align]
[align=left] Handle Errors that Occur During Data Entry in the Windows Forms DataGridView Control[/align]
[align=left] Samples:[/align]
[align=left] private void dataGridView1_DataError(object sender,[/align]
[align=left] DataGridViewDataErrorEventArgs e)[/align]
[align=left] {[/align]
[align=left] // If the data source raises an exception when a cell value is[/align]
[align=left] // commited, display an error message.[/align]
[align=left] if (e.Exception != null &&[/align]
[align=left] e.Context == DataGridViewDataErrorContext.Commit)[/align]
[align=left] {[/align]
[align=left] MessageBox.Show("CustomerID value must be unique.");[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left]11、大数据量显示采用Virtual Mode[/align]
[align=left] Implement Virtual Mode in the Windows Forms DataGridView Control[/align]
[align=left]12、设置指定的列只读[/align]
[align=left] Make Columns in the Windows Forms DataGridView Control Read-Only[/align]
[align=left] Samples:[/align]
[align=left] dataGridView1.Columns["CompanyName"].ReadOnly = true;[/align]
[align=left] [/align]
[align=left]13、移去自动生成的列[/align]
[align=left] Remove Autogenerated Columns from a Windows Forms DataGridView Control[/align]
[align=left] Sample:[/align]
[align=left] dataGridView1.AutoGenerateColumns = true;[/align]
[align=left] dataGridView1.DataSource = customerDataSet;[/align]
[align=left] dataGridView1.Columns.Remove ("Fax");[/align]
[align=left] 或:[/align]
[align=left] dataGridView1.Columns["CustomerID"].Visible = false;[/align]
[align=left]14、自定义选择模式[/align]
[align=left] Set the Selection Mode of the Windows Forms DataGridView Control[/align]
[align=left] Sample:[/align]
[align=left] this.dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;[/align]
[align=left] this.dataGridView1.MultiSelect = false;[/align]
[align=left]15、自定义设定光标进入单元格是否编辑模式(编辑模式)[/align]
[align=left] Specify the Edit Mode for the Windows Forms DataGridView Control[/align]
[align=left] this.dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;[/align]
[align=left]16、新行指定默认值[/align]
[align=left] Specify Default Values for New Rows in the Windows Forms DataGridView Control[/align]
[align=left] Sample:[/align]
private void
dataGridView1_DefaultValuesNeeded(object sender,
System.Windows.Forms.DataGridViewRowEventArgs e)
[align=left] {[/align]
[align=left] e.Row.Cells["Region"].Value = "WA";[/align]
[align=left] e.Row.Cells["City"].Value = "Redmond";[/align]
[align=left] e.Row.Cells["PostalCode"].Value = "98052-6399";[/align]
[align=left] e.Row.Cells["Region"].Value = "NA";[/align]
[align=left] e.Row.Cells["Country"].Value = "USA";[/align]
[align=left] e.Row.Cells["CustomerID"].Value = NewCustomerId();[/align]
[align=left] }[/align]
[align=left]17、数据验证[/align]
[align=left] Validate Data in the Windows Forms DataGridView Control[/align]
[align=left] Samples:[/align]
[align=left] private void dataGridView1_CellValidating(object sender,[/align]
[align=left] DataGridViewCellValidatingEventArgs e)[/align]
[align=left] {[/align]
[align=left] // Validate the CompanyName entry by disallowing empty strings.[/align]
[align=left] if (dataGridView1.Columns[e.ColumnIndex].Name == "CompanyName")[/align]
[align=left] {[/align]
[align=left] if (e.FormattedValue.ToString() == String.Empty)[/align]
[align=left] {[/align]
[align=left] dataGridView1.Rows[e.RowIndex].ErrorText =[/align]
[align=left] "Company Name must not be empty";[/align]
[align=left] e.Cancel = true;[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] }
18、数据提交到dataset中
DataSet ds = new DataSet("MyDataSet");
ds.Tables[biaom.Trim()].Rows.Clear();
try
{
for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
{
DataTable dt = ds.Tables[biaom.Trim()];
DataRow myrow = ds.Tables[biaom.Trim()].NewRow();
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
myrow[j] = Convert.ToString(dataGridView1.Rows[i].Cells[j].Value);
}
ds.Tables[biaom.Trim()].Rows.Add(myrow);
}
}
catch (Exception)
{

MessageBox.Show("输入类型错误!");
return;
}
[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: