现在的位置: 首页 > 综合 > 正文

C#中的DataGridView控件(WIN FORM)

2013年02月10日 ⁄ 综合 ⁄ 共 2390字 ⁄ 字号 评论关闭

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);

抱歉!评论已关闭.