一,类型转换成datatable
DataTable dt = dataGridView1.DataSource as DataTable;
二,常用属性
1.不允许自增列
dataGridView1.AutoGenerateColumns = false;
2.当改样式没用,添加此代码
dataGridView1.EnableHeadersVisualStyles = false;
3.DataGridViewComboBoxCell数据绑定
//第一种
this.Column4.DataSource = dtJson;
this.Column4.DisplayMember = "org_code";
this.Column4.ValueMember = "org_code";
//第二种
((DataGridViewComboBoxCell)dataGridView1.Rows[i].Cells[12]).Items.Add(dt.Rows[i]["status"].ToString());
((DataGridViewComboBoxCell)dataGridView1.Rows[i].Cells[12]).Value = dt.Rows[i]["status"].ToString();
4.DataGridViewCheckBoxCell动态赋值
DataGridViewCheckBoxCell check = dataGridView1.Rows[i].Cells[0] as DataGridViewCheckBoxCell;
check.Value = true;
5.TextBox带下拉列表
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
var tbec = e.Control as DataGridViewTextBoxEditingControl;
TextBox dk = e.Control as TextBox;
if (tbec == null)
{
return;
}
if (dataGridView1.CurrentCell.OwningColumn.Name == "Column9")
{
AutoCompleteStringCollection autoComplete1 = new AutoCompleteStringCollection();
autoComplete1.AddRange(skillList.ToArray());
dk.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
dk.AutoCompleteSource = AutoCompleteSource.CustomSource;
dk.AutoCompleteCustomSource = autoComplete1;
}
}
6.添加其他控件,如DateTimePicker
Rectangle _Rectangle;
DateTimePicker dtp = new DateTimePicker();
public Form1()
{
InitializeComponent();
this.dataGridView1.Controls.Add(dtp);
dtp.Visible = false;
dtp.CloseUp += new EventHandler(dtp_TextChange);
}
private void dtp_TextChange(object sender, EventArgs e)
{
dataGridView1.CurrentCell.Value = dtp.Value.ToString("yyyy/MM/dd");
}
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (!this.dataGridView1.ReadOnly && e.RowIndex != -1)
{
if (e.ColumnIndex == this.dataGridView1.Columns["delivery_day"].Index)
{
_Rectangle = dataGridView1.GetCellDisplayRectangle(e.ColumnIndex,
e.RowIndex, true); //得到所在单元格位置和大小
dtp.Size = new Size(_Rectangle.Width, _Rectangle.Height); //把单元格大小
赋给时间控件
dtp.Location = new Point(_Rectangle.X, _Rectangle.Y); //把单元格位置赋给
时间控件
dtp.Visible = true; //显示控件
}
else
dtp.Visible = false;
}
}