请问大侠,在Xtragrid控件中,如何锁定选中行中某几个单元格,使其不能编辑。单元格可能包含控件(如果CheckEdit,ComboEdit)!

解决方案 »

  1.   

    设置它相应Gridview列的AllowEdit属性:gridView1.Columns[0].OptionsColumn.AllowEdit = false;
      

  2.   

    处理ShowingEditor事件可以根据当前行其它列的值设置某列的可用性, 例子:
            void gridViewQuotation_ShowingEditor(object sender, CancelEventArgs e)
            {
                ColumnView view = sender as ColumnView;
                ColumnView viewMain = view.GridControl.MainView as ColumnView;
                if ((bool)viewMain.GetFocusedRowCellValue("Editable") == false ||
                    (bool)viewMain.GetFocusedRowCellValue("Complete") == true ||
                    ReadOnlyAccess == true)
                    view.FocusedColumn.OptionsColumn.ReadOnly = true;
                else
                    view.FocusedColumn.OptionsColumn.ReadOnly = false;            if (view.LevelName == "QuotationCost" &&
                    viewMain.GetFocusedRowCellValue("ProduceType").ToString() == "Manufactured" &&
                    ManufacturedDisableColumns.Contains(view.FocusedColumn.FieldName) == true)
                    e.Cancel = true;
            }
      

  3.   

    gridView1.SelectedRows[0].Cells[0].ReadOnly=false;
    第2个0 为你要选择的列的索引
      

  4.   

    To 5楼:
    假如有2行2列的Grid,第一列是ComboEdit类型的数据,第二列是TextEdit的可输入文本框。
    ComboEdit的下拉选项是:可编辑,不可编辑两项当第一行的第一列选择:可编辑选项时,  第一行第二列的文本可编辑
    当第二行的第一列选择:不可编辑选项时,第二行第二列的文本不可编辑因此,不能把第二列整列都锁定
      

  5.   

    To 7 楼:
    在这里用的是XtraGrid控件,不是微软的控件!
    没有发现SelectedRows这个集合;
      

  6.   

    六楼的方法可以,不过如果cellL中放的是Combobox的时候似乎不正常,当点击被锁定的cell之后该列所有ComboBox都不可用了。
      

  7.   


     private void gv_ShowingEditor(object sender, CancelEventArgs e)
            {
                if (gv.FocusedColumn.Name == "coldw")
                {
                    int r = gv.FocusedRowHandle;
                    string dw0 = App_FuncClass.DataTableGetStr(dt, r, "dw0");
                    string dw1 = App_FuncClass.DataTableGetStr(dt, r, "dw1");
                    if (dw0.Length == 0)
                    {
                        e.Cancel = true;
                    }
                    else
                    {
                        cbodw.Items.Clear();
                        cbodw.Items.Add(dw0);
                        cbodw.Items.Add(dw1);
                    }
                }
            }设置Cancel=true就行了
    我这个是当物料没选的时候,该行的单位列不可编辑,是combobox控件