AllowUserToResizeRows允许用户调整行的宽度
AllowUserToResizeColumns允许用户调整列的长度
ColumnHeadersVisible是否有一个系统颜色的列头
MultiSelect 是否可以一次选择多行
ReadOnly是否是只读的单元格
SelectionMode 单元格选择,整行选择,整列选择,行头选择,列头选择
改列名
this.DataGridView1.Column["sql语句中的列名"].HeaderText= "newName";
修改列的显示位置
this.DataGridView1.Column["sql语句中的列名"].DisplayIndex= newIndex;
比如把某一列变成第一列
dv.Columns["列2"].DisplayIndex = 0
datagridview中列的位置不一定是根据select语句中列的顺序来的
1) 如果dgOutImage.DataSource=集合(RecFileArgs)
(向上移动)
dgOutImage.DataSource= new BindingList<RecFileArgs>(RecFileArgs1);
//如果选择的是多行
if (dgOutImage.SelectedRows.Count> 1)
{
return;
}
dgOutImage.Focus();
//目前选择的行号
int rowIndex =dgOutImage.CurrentRow.Index;
if (rowIndex!= 0)
{
RecFileArgs _reccCurr = dvrPlayListRight[rowIndex];
RecFileArgs_reccPer = dvrPlayListRight[rowIndex - 1];
dvrPlayListRight[rowIndex] = _reccPer;
dvrPlayListRight[rowIndex - 1] = _reccCurr;
dgOutImage.DataSource = dvrPlayListRight;
dgOutImage.Refresh();
dgOutImage.Rows[rowIndex - 1].Selected = true;
dgOutImage.CurrentCell =dgOutImage.Rows[rowIndex - 1].Cells[0];
}
if (rowIndex - 1 == 0)
{
向上按钮.Enabled = false;
}
else
{
向上按钮.Enabled = true;
}
2) 如果dgOutImage.DataSource=DataTable
(向下移动)
object[] _rowData = DataTable.Rows[i].ItemArray;
DataTable.Rows[i].ItemArray = DataTable.Rows[i+1].ItemArray
DataTable.Rows[i+1].ItemArray = _rowData;
for (int i = 0; i < DataGridView1.SelectedRows.Count;i++)
{
//第i行第一列
String ai1=DataGridView1.SelectedRows[i].Cells[0].Value.ToString();
//第i行第二列
String ai2=DataGridView1.SelectedRows[i].Cells[1].Value.ToString();
}
int rowIndex = DataGridView1.CurrentRow.Index;
2. DataGridView中的列不能排序
DataGridView1.Columns[0].SortMode =System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
DataGridView1.Columns[1].SortMode =System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
3. DataGridView中一列一列的绑定(列名存在集合arrList中,数据存在DataTable)
解释:集合(arrList)中存SQL语句SELECT中的”名字” 转换成DataTable的“列名”
//通过集合中的名字创建列名
protected DataTable CreateTable(ArrayList arrList, DataReaderreader)
// reader可以从ExecuteReader获得
{
// DataTable的名字
DataTable dt = new DataTable("table");
//给DataTable定列名
for (int i= 0; i < arrList.Count; i++)
{
DataColumn dtColumn = newDataColumn();
dtColumn.ColumnName = (string)arrList[i];
dt.Columns.Add(dtColumn);
}
//往DataTable里加行
DataRow dtRow;
while (reader.Read())
{
dtRow =dt.NewRow();
for (int i = 0; i < arrList.Count; i++)
{
try
{
dtRow[(string)arrList[i]] =reader.GetValue(i).ToString();
}
catch
{
dtRow[(string)arrList[i]] = System.DBNull.Value;
}
}
dt.Rows.Add(dtRow);
}
return dt;
}
DataTable m_listViewInfo = CreateTable(集合名,DataReader名);
//将DataTable绑定到DataView中
DataView dvListViewInfo = new DataView(m_listViewInfo);
dataGridView1.Columns.Clear();
//取消dataGridView1按默认方式显示
dataGridView1.AutoGenerateColumns= false;
//绑定DataView到dataGridView上
dataGridView1.DataSource = dvListViewInfo;
DataGridViewTextBoxColumn dtcTimeStamp = newDataGridViewTextBoxColumn();
dtcTimeStamp.DataPropertyName = "TIMESTAMP";//设置数据源属性的名称
dtcTimeStamp.HeaderText = "日期";//列头显示的汉字
dtcTimeStamp.Width = 110;
dtcTimeStamp.DefaultCellStyle.Alignment=DataGridViewContentAlignment.MiddleCenter;
dtcTimeStamp.ReadOnly = true;
dtcTimeStamp.SortMode = DataGridViewColumnSortMode.NotSortable;
dataGridView1.Columns.Add(dtcTimeStamp);//最后一定要添加进去
4. 在DataGridView中第一列手动添加行号
//传一个查询好的datatable,返回添加序号的datatable
public DataTableretdt(DataTable dt)
{
dt.Columns.Add("SN", typeof(Int32));
//把SN放到第一位
dt.Columns["SN"].SetOrdinal(0);
int i = 0;
foreach (DataRow dr in dt.Rows)
{
dt.Rows[i][0] = i + 1;
i++;
}
return dt;
}
5. 自己建DataGridView就这3步
DataView dvCmControlInfo = new DataView(某个DataTable);
dataGridView1.Columns.Clear();
dataGridView1.AutoGenerateColumns =false;
dataGridView1.DataSource =dvCmControlInfo;//绑DataTable,DataSet,DataView,BindingList
dataGridView1.DataMember= “”;//当绑定多表数据源时,这里写表名。
DataGridViewTextBoxColumn dtGroup = new DataGridViewTextBoxColumn();
dtGroup.DataPropertyName = "group"; //DataTable中代表“小组”的名字
dtGroup.HeaderText = "小组"; //DataGridView标题显示的名字
dataGridView1.Columns.Add(dtGroup);
dataGridView1.Columns[0].Width =30; //手动设定一格长度
dataGridView1.Columns[0].SortMode =System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;//不可以按序排列
dataGridView1.ColumnHeadersDefaultCellStyle.Alignment= DataGridViewContentAlignment.MiddleCenter;//每一格中内容居中排列
10. DataGridView失去焦点,初始状态第一行不选中
dataGridView1.ClearSelection();
11. DataGridView中有可编辑单元格时,保存当前正在编辑的单元格信息。
有时DataGridView上的单元格是可以编辑的,或者DataGridView某一列是ComboBox、CheckBox,这时用户在编辑完信息而没有点击任何别的地方(点击别的地方就不会出现以下问题),直接点击保存按钮(只要是需要获取DataGridView当前各个单元格信息的操作),当前已更改的编辑项将不能获取到,只有让DataGridView处在停止编辑并且接受到当前所有可编辑单元格的内容时,才能正确保存当前所有信息。这个“停止编辑并且接受到当前所有可编辑单元格的内容”的功能就是下面两行代码。
dataGridView1.CommitEdit((DataGridViewDataErrorContexts)123);
dataGridView1.BindingContext[dataGridView1.DataSource].EndCurrentEdit();