【问题标题】:How to clear a cell value of bounded column in Gridview Winforms Devexpress?如何在 Gridview Winforms Devexpress 中清除有界列的单元格值?
【发布时间】:2014-02-14 15:58:52
【问题描述】:

如何清除Gridview中Bounded column的单元格值??我执行一些计算并将一个 int 值设置为一个单元格(有界列)。我再次重新计算它并尝试在有界列时间的同一单元格中设置值不变,因此我尝试在为其设置值之前清除单元格值。

 private void gridView1_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
    {
        // % to amt

        object obj = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["DiscountPercentage"]) == DBNull.Value
                            ? 0
                            : (gridView1.GetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["DiscountPercentage"]));
        decimal a = Convert.ToDecimal(obj);
        if (a > 0)
        {
            gridColumn1.UnboundType = DevExpress.Data.UnboundColumnType.Decimal;
            gridColumn1.UnboundExpression = "[UnitPrice] * ([DiscountPercentage] / 100.0)";
        }





        // amt to %
        object dm = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["DiscountAmount"]) == DBNull.Value
                            ? 0
                            : (gridView1.GetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["DiscountAmount"]));
        decimal a1 = Convert.ToDecimal(dm);
        if (a1 > 0)
        {
            gridColumn2.UnboundType = DevExpress.Data.UnboundColumnType.Decimal;
            gridColumn2.UnboundExpression = "Round(([DiscountAmount] / [UnitPrice]) * 100.0, 2)";
        }
    }




    private void gridView1_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
    {
        // % to amt
        object obj = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["DiscountPercentage"]) == DBNull.Value
                            ? 0
                            : (gridView1.GetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["DiscountPercentage"]));
        decimal a = Convert.ToDecimal(obj);

        if (a > 0)
        {


            object obj2 = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["gridColumn1"]);
            int aa = Convert.ToInt32(obj2);
            gridView1.SetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["DiscountAmount"], aa);
        }


        // amt to %
        object dm = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["DiscountAmount"]) == DBNull.Value
                            ? 0
                            : (gridView1.GetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["DiscountAmount"]));
        decimal a1 = Convert.ToDecimal(dm);
        if (a1 > 0)
        {
            object obj3 = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["gridColumn2"]);
            int aa2 = Convert.ToInt32(obj3);
            gridView1.SetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["DiscountPercentage"], aa2);
        }

    }

提前致谢。

【问题讨论】:

  • 请提供一些代码。
  • @DennisTraub 我更新了我的代码,请验证。

标签: c# winforms gridview devexpress


【解决方案1】:

终于找到解决这个问题的办法了。

private void gridView1_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
    {
        var row = gridView1.GetFocusedDataRow();

        object obj1 = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["DiscountPercentage"]) == DBNull.Value
                        ? 0
                        : (gridView1.GetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["DiscountPercentage"]));
        int inte1 = Convert.ToInt32(obj1);

        object obj2 = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["DiscountAmount"]) == DBNull.Value
                        ? 0
                        : (gridView1.GetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["DiscountAmount"]));
        int inte2 = Convert.ToInt32(obj2);

        // Calculating the dicsount %
        if (e.Column == colDiscountAmount)
        {
            if (inte2 == 0)
            {
                return;
            }
            else
            {
                var productPrice = Convert.ToDecimal(row["UnitPrice"]);
                var quan = Convert.ToDecimal(row["Quantity"]);
                var discountAmout = Convert.ToDecimal(row["DiscountAmount"]);
                var temp = (discountAmout * 100) / (productPrice * quan);
                row["DiscountPercentage"] = temp.ToString("n2");
            }
        }

        // Calculating the discount amount
        if (e.Column == colDiscountPercentage)
        {
            if (inte1 == 0)
            {
                return;
            }
            else
            {
                var productPrice = Convert.ToDecimal(row["UnitPrice"]);
                var quan = Convert.ToDecimal(row["Quantity"]);
                var discountPercent = Convert.ToDecimal(row["DiscountPercentage"]);
                var temp1 = (productPrice * quan) * (discountPercent / 100);
                row["DiscountAmount"] = temp1.ToString("n2");
            }
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多