1.一列不可以编辑
gridView1.Columns[“列名”].OptionsColumn.AllowEdit = false;//设置列不可以编辑
2.一行不可以编辑
private void gv_ShowingEditor(object sender, CancelEventArgs e)
{
QuDaily quDaily = gv.GetFocusedRow() as QuDaily;
if (quDaily.StatusEnum != QuDailyStatus.提交)
{
e.Cancel = true;
}
}
案例:行只读(ShowingEditor)+CellValueChanged+存储过程作为数据库 实现特定行编辑
private void bandedGridView1_ShowingEditor(object sender, CancelEventArgs e)
{
int rowIndex = bandedGridView1.FocusedRowHandle;
string kinddivision = bandedGridView1.GetRowCellValue(rowIndex, "kinddivision").ToString();
if (kinddivision =="工位标准")
{
e.Cancel = true;
}
else if (kinddivision == "检验人" && rbll.Select_Ruturn1("检验人", empname).Rows[0]["returnvalue"].ToString() != "2")
{
e.Cancel = true;
}
else if (kinddivision == "IPQC确认" && rbll.Select_Ruturn1("IPQC确认", empname).Rows[0]["returnvalue"].ToString() != "3")
{
e.Cancel = true;
}
else if (kinddivision == "实测" && rbll.Select_Ruturn1("实测", empname).Rows[0]["returnvalue"].ToString() != "1")
{
e.Cancel = true;
}
}
private void bandedGridView1_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
{
GridView view = sender as GridView;
//rowHandle的含义是获取定位编辑的单元格在第几行,可理解为Y坐标
int rowIndex = e.RowHandle;
//获取被编辑的单元格在第几列,可理解为X坐标
int columnindex = e.Column.AbsoluteIndex;
//获取绑定到这个单元格的字段名
string changeFiled = e.Column.FieldName;
//获取被编辑的单元格的表头
string caption = e.Column.Caption;
//获取新输入的值
string newValue = newValue = e.Value.ToString().Trim();
string newsId = bandedGridView1.GetRowCellValue(rowIndex, "newsId").ToString();
string kinddivision = bandedGridView1.GetRowCellValue(rowIndex, "kinddivision").ToString();
string station = bandedGridView1.GetRowCellValue(rowIndex, "station").ToString();
if (kinddivision == "实测")
{
try{
if (!string.IsNullOrEmpty(newValue))
{
if (Convert.ToInt32(newValue) >= 360 && Convert.ToInt32(newValue) <= 400)
{
rbll.Update_1(changeFiled, newValue, newsId);
}
else
{
string changeFiled2 = rbll.Select_5(newsId).Rows[0][changeFiled].ToString();
this.bandedGridView1.SetRowCellValue(rowIndex, changeFiled, changeFiled2);
}
}
}catch(Exception ex){
XtraMessageBox.Show("注:实测(360-400).");
}
}
else
{
rbll.Update_1(changeFiled, newValue, newsId);
}
}
create procedure [dbo].[selectdianlaoempname]
(
@date nvarchar(250) , --插入的日期
@flag nvarchar(250) --判定插入的数据
)
AS
begin
declare @SignStatus nvarchar(250) ;--状态
end
if @date='实测'
begin
if @flag='1' or @flag='人员'
set @SignStatus='1'
end
else if @date='检验人'
begin
if @flag='1' or @flag='人员'
set @SignStatus='2'
end
else if @date='IPQC确认'
begin
if @flag='1' or @flag='人员'
set @SignStatus='3'
end
select @SignStatus as returnvalue