gridview单元格编辑添加数据

行号

private void gridView1_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)
        {
            e.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
            if (e.Info.IsRowIndicator)
            {
                if (e.RowHandle >= 0)
                {
                    e.Info.DisplayText = (e.RowHandle + 1).ToString();
                }
                else if (e.RowHandle < 0 && e.RowHandle > -1000)
                {
                    e.Info.Appearance.BackColor = System.Drawing.Color.AntiqueWhite;
                    e.Info.DisplayText = "G" + e.RowHandle.ToString();
                }
            }
        }

声明数据源

private BindingList<InvoiceDetail> DataSource;//发票数据源
//初始化数据源
private void frmAddindent_Load(object sender, EventArgs e)
        {
            this.outTaskListLog.RefreshParent += new RefreshParentHandler((object obj) => { SetForm((OutRequest)obj); });
            DataSource = new BindingList<InvoiceDetail>();
            dvginfo.DataSource = DataSource;
        }

添加新行事件

private void gridView1_InitNewRow(object sender, DevExpress.XtraGrid.Views.Grid.InitNewRowEventArgs e)
        {
            InvoiceDetail invoiceData = gridView1.GetRow(e.RowHandle) as InvoiceDetail;
            invoiceData.Price = 0;
            invoiceData.Amount = 0;
            invoiceData.Currency = cbDeclaredCurrency.Text;
            invoiceData.Quantity = 1;
            invoiceData.QuantityUnit = "PCS";
            invoiceData.OriginCountryCode = "CN";
        }

单元格值,验证,离开事件

 private void gridView1_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
        {
            if (gridView1.FocusedRowHandle >= 0 || gridView1.IsNewItemRow(gridView1.FocusedRowHandle))
            {
                if (e.Column.FieldName.Equals("Quantity") || e.Column.FieldName.Equals("Price"))
                {
                    int i = 0;
                    if (gridView1.GetFocusedRowCellValue("Quantity") != null)
                    {
                        i = (int)gridView1.GetFocusedRowCellValue("Quantity");
                    }
                    decimal d = 0;
                    if (gridView1.GetFocusedRowCellValue("Price") != null)
                    {
                        d = Common.Utils.ObjToDecimal(gridView1.GetFocusedRowCellValue("Price"), 0);
                    }
                    decimal dec = i * d;
                    //设置结果值
                    gridView1.SetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["Amount"], dec);
                    //gridView1.SetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["NumberOfPieces"], e.RowHandle + 1);
                }
                if (e.Column.FieldName.Equals("Amount"))
                {
                    decimal dAmount = DataSource.Sum(s => s.Amount);
                    txtDeclared.Text = dAmount.ToString();
                }
            }
        }
private void gridView1_BeforeLeaveRow(object sender, DevExpress.XtraGrid.Views.Base.RowAllowEventArgs e)
        {
            if (gridView1.GetFocusedRowCellValue("Description") == null || string.IsNullOrWhiteSpace(gridView1.GetFocusedRowCellValue("Description").ToString()))
            {
                //gridView1.SetFocusedValue(gridView1.GetFocusedRowCellValue(""));
                return;
            }
            if (gridView1.GetFocusedRowCellValue("Quantity") == null || gridView1.GetFocusedRowCellValue("Quantity").ToString() == "0")
            {
                //gridView1.OptionsView.NewItemRowPosition = NewItemRowPosition.None;
                return;
            }
            if (gridView1.GetFocusedRowCellValue("Price") == null || gridView1.GetFocusedRowCellValue("Price").ToString() == "0")
            {
                return;
            }
            if (gridView1.GetFocusedRowCellValue("Amount") == null || gridView1.GetFocusedRowCellValue("Amount").ToString() == "0")
            {
                return;
            }
        }

        private void gridView1_ValidatingEditor(object sender, DevExpress.XtraEditors.Controls.BaseContainerValidateEditorEventArgs e)
        {
            if (e.Value == null)
            {
                e.Value = "";
            }
            string reply = "";
            int ireply = -1;
            decimal dreply = -1;
            if (gridView1.FocusedColumn.FieldName == "Description")
            {
                if (string.IsNullOrWhiteSpace(e.Value.ToString()))
                {
                    reply = "品名不能为空。";
                }
            }
            if (gridView1.FocusedColumn.FieldName == "Quantity")
            {
                if (int.TryParse(e.Value.ToString(), out ireply))
                {
                    if (ireply <= 0)
                    {
                        reply = "物品数量必须大于零";
                    }
                }
                else
                {
                    reply = "物品数量需要输入整数";
                }

            }

            if (gridView1.FocusedColumn.FieldName == "Price")
            {
                if (decimal.TryParse(e.Value.ToString(), out dreply))
                {
                    if (dreply <= 0)
                    {
                        reply = "单件必须大于零";
                    }
                }
                else
                {
                    reply = "单件需要输入数字";
                }
            }

            if (gridView1.FocusedColumn.FieldName == "Amount")
            {
                if (decimal.TryParse(e.Value.ToString(), out dreply))
                {
                    if (dreply <= 0)
                    {
                        reply = "金额必须大于零";
                    }

                }
                else
                {
                    reply = "金额需要输入数字";
                }
            }

            if (!string.IsNullOrWhiteSpace(reply))
            {
                e.ErrorText = reply.ToString();
                e.Valid = false;
            }
        }

        AppearanceDefault appError = new AppearanceDefault(Color.White, Color.LightCoral, Color.Empty, Color.Red, System.Drawing.Drawing2D.LinearGradientMode.ForwardDiagonal);
        private void gridView1_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e)
        {
            object val = gridView1.GetRowCellValue(e.RowHandle, e.Column);
            if (gridView1.IsNewItemRow(e.RowHandle))
            {
                return;
            }
            else
            {
                if (e.Column.FieldName == "Description")
                {
                    if (e.CellValue == null || string.IsNullOrWhiteSpace(e.CellValue.ToString()))
                    {
                        AppearanceHelper.Apply(e.Appearance, appError);
                        //ErrorInvoice = true;
                    }
                }
                if (e.Column.FieldName == "Quantity")
                {
                    if (e.CellValue == null || e.CellValue.ToString() == "0")
                    {
                        AppearanceHelper.Apply(e.Appearance, appError);
                        //ErrorInvoice = true;
                    }
                }
                if (e.Column.FieldName == "Price")
                {
                    if (e.CellValue == null || e.CellValue.ToString() == "0")
                    {
                        AppearanceHelper.Apply(e.Appearance, appError);
                    }
                }
                if (e.Column.FieldName == "Amount")
                {
                    if (e.CellValue == null || e.CellValue.ToString() == "0")
                    {
                        AppearanceHelper.Apply(e.Appearance, appError);
                    }
                }
            }
        }

单元格控件赋值

#region 发票明细数据
            //原产地
            gltxtCountryOrigin.DataSource = cname;//原产地二字码
            this.gltxtCountryOrigin.NullText = "";
            this.gltxtCountryOrigin.DisplayMember = "Col001";
            this.gltxtCountryOrigin.ValueMember = "Col001";
            this.gltxtCountryOrigin.AllowNullInput = DevExpress.Utils.DefaultBoolean.True;
            this.gltxtCountryOrigin.View.BestFitColumns();
            this.gltxtCountryOrigin.ShowFooter = false;
            this.gltxtCountryOrigin.View.OptionsView.ShowAutoFilterRow = true; //显示不显示grid上第一个空行,也是用于检索的应用
            //this.cmb_rCountryCode.Properties.AutoComplete = false;
            this.gltxtCountryOrigin.ImmediatePopup = true;////在输入框按任一可见字符键时立即弹出下拉窗体
            this.gltxtCountryOrigin.PopupFilterMode = DevExpress.XtraEditors.PopupFilterMode.Contains;//
            this.gltxtCountryOrigin.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;
            //数量单位
            var mienu_QuantityUnits = quantityUnitsBLL.GetQuantityUnitsList().OrderBy(o => o.quCode).ToList();//数量单位
            this.gltxtNumberUnits.DataSource = mienu_QuantityUnits;
            this.gltxtNumberUnits.NullText = "";
            this.gltxtNumberUnits.DisplayMember = "quCode";
            this.gltxtNumberUnits.ValueMember = "quCode";
            this.gltxtNumberUnits.AllowNullInput = DevExpress.Utils.DefaultBoolean.True;
            this.gltxtNumberUnits.View.BestFitColumns();
            this.gltxtNumberUnits.ShowFooter = false;
            this.gltxtNumberUnits.View.OptionsView.ShowAutoFilterRow = true; //显示不显示grid上第一个空行,也是用于检索的应用
            //this.gltxtNumberUnits.Properties.AutoComplete = false;
            this.gltxtNumberUnits.ImmediatePopup = true;////在输入框按任一可见字符键时立即弹出下拉窗体
            this.gltxtNumberUnits.PopupFilterMode = DevExpress.XtraEditors.PopupFilterMode.Contains;//
            this.gltxtNumberUnits.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;
            #endregion

 单元格属性设置

原文地址:https://www.cnblogs.com/shuaimeng/p/9927399.html