如何 设置 datagrid中 具体的某 行或者是列 或者是 单元格 不可编辑!

时间:2022-06-01 21:01:13
如题..
    怎么设置 具体的 单元格的编辑属性...?
  我只知道 mydatagrid.ReadOnly=ture or false  这样是设置全部的 单元格..
  谢谢了!

9 个解决方案

#1



在列里这样也是可以的
ReadOnly=ture

#2


可以设置某列为只读,在属性生成器里面有。

#3


//行
dataGridView1.Rows[0].ReadOnly = true;
dataGridView1.Rows[1].ReadOnly = false;

//列
dataGridView1.Columns[0].ReadOnly = true;
dataGridView1.Columns[1].ReadOnly = false;

#4


//单元格
dataGridView1.Rows[0][0].ReadOnly = true;
dataGridView1.Rows[0][1].ReadOnly = false;

#5


我还要声明 dataGridView1 吗?
    没其它办法吗?
 还有楼上说的 "在列里这样也是可以的"..
  可以给代码看看吗?

#6


//定义DataGridTableStyle 实例
DataGridTableStyle tsMemployee = new DataGridTableStyle();
//将DataGridTableStyle实例映射到DataSet的表
tsMemployee.MappingName = myDataSet.Tables[0].TableName;
//按照数据库中的表有多少列就定义多少个DataGridColumnStyle列
DataGridColumnStyle DiviCodeCol = new DataGridTextBoxColumn();
DiviCodeCol.MappingName = "DiviCode";//映射表中列的名称
DiviCodeCol.ReadOnly = true;
DiviCodeCol.HeaderText = "部门编码";//列头的名称
DiviCodeCol.NullText = "";将DataGrid中的Null换成""
DiviCodeCol.Width = 60;
tsMemployee.GridColumnStyles.Add(DiviCodeCol);
dgStafferInfo.TableStyles.Clear();
dgStafferInfo.TableStyles.Add(tsMemployee);

#7


DataGridTableStyle tsQueryWatiOrder = new DataGridTableStyle();
tsQueryWatiOrder.MappingName =myDtWaitAttemOrderList.TableName;
// 设置属性
tsQueryWatiOrder.AlternatingBackColor = Color.LightGray;
 
DataGridBoolColumn chkboCol = new DataGridBoolColumn();
chkboCol.MappingName = "xz";
chkboCol.HeaderText = "选择";
chkboCol.Width = 36;
chkboCol.AllowNull=false;
tsQueryWatiOrder.GridColumnStyles.Add(chkboCol);

DataGridTextBoxColumn TextCol = new DataGridTextBoxColumn();
TextCol.MappingName = "orderid";
TextCol.HeaderText = "委托单号";
TextCol.Width = 140;
TextCol.ReadOnly=true;
tsQueryWatiOrder.GridColumnStyles.Add(TextCol);

myDtWaitAttemOrderList.DefaultView.AllowDelete=false;
myDtWaitAttemOrderList.DefaultView.AllowEdit=true;
myDtWaitAttemOrderList.DefaultView.AllowNew=false;
dataGrid1.TableStyles.Clear();
dataGrid1.TableStyles.Add(tsQueryWatiOrder);

#8


上面的代码我看明白了...
    但是我的代码 是用 数据适配器 和 数据集 绑定到 数据表格中的..
  手工添加 行和列 太麻烦了把 我的数据表格 是动态的..
 没有同过定义好的数据表格 得到单元格 然后 把单元格的属性 设置 成 只读的方法吗??
private SqlDataAdapter dbAdap;
private System.Data.DataSet dbDS;
private System.Windows.Forms.DataGrid mainDataGrid;

我就定义了 这些变量,不能实现这个功能吗?

#9


没有简便的方法,不过你可以不用去加东西,可以去删东西,参看

http://www.syncfusion.com/FAQ/WindowsForms/FAQ_c44c.aspx#q1008q

然后你在其中增加判断一下是否是checkbox控件

#1



在列里这样也是可以的
ReadOnly=ture

#2


可以设置某列为只读,在属性生成器里面有。

#3


//行
dataGridView1.Rows[0].ReadOnly = true;
dataGridView1.Rows[1].ReadOnly = false;

//列
dataGridView1.Columns[0].ReadOnly = true;
dataGridView1.Columns[1].ReadOnly = false;

#4


//单元格
dataGridView1.Rows[0][0].ReadOnly = true;
dataGridView1.Rows[0][1].ReadOnly = false;

#5


我还要声明 dataGridView1 吗?
    没其它办法吗?
 还有楼上说的 "在列里这样也是可以的"..
  可以给代码看看吗?

#6


//定义DataGridTableStyle 实例
DataGridTableStyle tsMemployee = new DataGridTableStyle();
//将DataGridTableStyle实例映射到DataSet的表
tsMemployee.MappingName = myDataSet.Tables[0].TableName;
//按照数据库中的表有多少列就定义多少个DataGridColumnStyle列
DataGridColumnStyle DiviCodeCol = new DataGridTextBoxColumn();
DiviCodeCol.MappingName = "DiviCode";//映射表中列的名称
DiviCodeCol.ReadOnly = true;
DiviCodeCol.HeaderText = "部门编码";//列头的名称
DiviCodeCol.NullText = "";将DataGrid中的Null换成""
DiviCodeCol.Width = 60;
tsMemployee.GridColumnStyles.Add(DiviCodeCol);
dgStafferInfo.TableStyles.Clear();
dgStafferInfo.TableStyles.Add(tsMemployee);

#7


DataGridTableStyle tsQueryWatiOrder = new DataGridTableStyle();
tsQueryWatiOrder.MappingName =myDtWaitAttemOrderList.TableName;
// 设置属性
tsQueryWatiOrder.AlternatingBackColor = Color.LightGray;
 
DataGridBoolColumn chkboCol = new DataGridBoolColumn();
chkboCol.MappingName = "xz";
chkboCol.HeaderText = "选择";
chkboCol.Width = 36;
chkboCol.AllowNull=false;
tsQueryWatiOrder.GridColumnStyles.Add(chkboCol);

DataGridTextBoxColumn TextCol = new DataGridTextBoxColumn();
TextCol.MappingName = "orderid";
TextCol.HeaderText = "委托单号";
TextCol.Width = 140;
TextCol.ReadOnly=true;
tsQueryWatiOrder.GridColumnStyles.Add(TextCol);

myDtWaitAttemOrderList.DefaultView.AllowDelete=false;
myDtWaitAttemOrderList.DefaultView.AllowEdit=true;
myDtWaitAttemOrderList.DefaultView.AllowNew=false;
dataGrid1.TableStyles.Clear();
dataGrid1.TableStyles.Add(tsQueryWatiOrder);

#8


上面的代码我看明白了...
    但是我的代码 是用 数据适配器 和 数据集 绑定到 数据表格中的..
  手工添加 行和列 太麻烦了把 我的数据表格 是动态的..
 没有同过定义好的数据表格 得到单元格 然后 把单元格的属性 设置 成 只读的方法吗??
private SqlDataAdapter dbAdap;
private System.Data.DataSet dbDS;
private System.Windows.Forms.DataGrid mainDataGrid;

我就定义了 这些变量,不能实现这个功能吗?

#9


没有简便的方法,不过你可以不用去加东西,可以去删东西,参看

http://www.syncfusion.com/FAQ/WindowsForms/FAQ_c44c.aspx#q1008q

然后你在其中增加判断一下是否是checkbox控件