Q:如何让DataGridView 自适应内容的宽度?
A:改变AutoSizeColumnMode属性
ps:DataGridViewAutoSizeColumnsMode.Fill; 自动调整列宽,在一屏内显示所有的列(没有横向的滚动条)
DataGridViewAutoSizeColumnsMode.AllCells; 自动调整列宽,适应所有单元格包括列头。
Q:我不想在DataGridView中编辑数据,我要自己控制
A:可以这样:
dgvColorGroup.ReadOnly = true;
dgvColorGroup.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
Q:如何对DataGridView的数据绑定操作?
sqlCon.Open();
strSql = "SELECT Name,Amount FROM Store"
BindingSource bsCargo = new BindingSource();
SqlDataAdapter sqlDA = new SqlDataAdapter(strSql, sqlCon);
SqlCommandBuilder sqlcb = new SqlCommandBuilder(sqlDA);
dtStock = new DataTable();
sqlDA.Fill(dtStock);
dgvStock.DataSource = dtStock;
dataGridView事件发生顺序
绑定数据,DataBindingComplete事件发生,
dataGridView无数据,设置DataSource属性(进行数据绑定),SelectionChanged发生,RowEnter发生,填充数据,CellEnter发生,第二次SelectionChanged发生,DataBindingComplete发生
dataGridView有数据,不变单元格(鼠标点击),CellClick发生;
dataGridView有数据,不变行,改变单元格(鼠标点击或键盘方向),CellEnter发生;
dataGridView有数据,改变单元格行(鼠标点击或键盘方向),
RowEnter发生(CurrentRow为原来的行),CellEnter发生(CurrentRow为原来的行),SelectionChanged发生。
所以如果想做主从表数据联动效果,最好是在SelectionChanged事件中写代码。之前要把dataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
Q:DataGridView 不显示最下面的新行?
A:通常 DataGridView 的最下面一行是用户新追加的行(行头显示 * )。如果不想让用户新追加行即不想显示该新行,可以将 DataGridView 对象的 AllowUserToAddRows 属性设置为 False。
DataGridView如何马上定位到某一行
DataGridView.CurrentCell = DataGridView.Rows[你要的行索引].Cells[0];
Q:如何用两个dgv显示数据库主从表内容?
A:只要在显示主表的dgv1的SelectionChanged事件中写查询代码
private void dgvColorGroup_SelectionChanged(object sender, EventArgs e)
{
FillDgvColorDetail();
}
如果是窗体加载后即根据主表显示从表,则应做如下处理
if (null != dgvColorGroup.CurrentRow)
{// 如果主表中存在当前行
DataGridViewRow dgvRow = dgvColorGroup.CurrentRow; //当前行
//如果在得到主表的SQL语句中有AS转变了列名,则从表取查询关键字时要用新列名,如下:
string currentCGC = dgvRow.Cells["颜色组代码"].Value.ToString();
string sqlString = CGlobal.T_COLOR_DETAIL_SELECT + " WHERE fColorGroupCode = '" + currentCGC + "'";
DataSet myDataSetCGDetail = new DataSet();
myDataSetCGDetail = mySQLManager.GetMySqlDataSet(CommandType.Text, sqlString);
if (null != myDataSetCGDetail.Tables && 1 == myDataSetCGDetail.Tables.Count && 0 < myDataSetCGDetail.Tables[0].Rows.Count)
{// 查到了颜色组明细记录
dgvColorGroupDetail.DataSource = myDataSetCGDetail.Tables[0];
bColorGroupDetailDelete.Enabled = true;
}
else
{
bColorGroupDetailDelete.Enabled = false;
}
Q:如何在最后添加合计行?
A:http://www.codeproject.com/Articles/51889/Summary-DataGridView
Summary DataGridView
Q:如何删除当前行?
A: dgvCustomer.Rows.RemoveAt(dgvCustomer.CurrentRow.Index);