Show message in empty cells in GridView

后端 未结 4 2013
野性不改
野性不改 2021-01-06 14:03

I\'m importing GridView from excel I need to show a message near every empty cell to give the user information about what it should be writing..



        
相关标签:
4条回答
  • 2021-01-06 14:14

    To change the color of cell

    Rows[1].Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red);
    
    0 讨论(0)
  • 2021-01-06 14:18

    Maybe you can use a ToolTip to show your alert:

    toolTip1.ToolTipIcon = ToolTipIcon.Warning;
    toolTip1.ToolTipTitle = "Warning!";
    toolTip1.Show("Missing 'First Name'", x, y);
    

    You only need to guess the location of the cell based on the sizes of the rows and columns of the DataGridView.

    Example1 Example2

    ToolTip is in System.Windows.Forms namespace.

    0 讨论(0)
  • 2021-01-06 14:22

    Reference: How to: Provide Custom Display Text for Data Cells

    To provide custom display text for data cells via the ColumnView.CustomColumnDisplayText event. To more information regarding customdrawing and cell styling go through Custom Painting Samples, Customizing Appearances of Individual Rows and Cells documentation section.

    check the example empty strings are displayed within the "Discount" column's cells if they contain zero values.

    using DevExpress.XtraGrid.Views.Base;
    
    private void gridView1_CustomColumnDisplayText(object sender, 
    CustomColumnDisplayTextEventArgs e) {
       if(e.Column.FieldName == "Discount")
          if(Convert.ToDecimal(e.Value) == 0) e.DisplayText = "";
    }
    

    If you want to show Image and text both then you need to handle the GridView.CustomDrawCell event of your GridView, here is a snip of code that change the color of the Name column, based on an other column valoe (age column)

    private void gridView_CustomDrawCell(object sender, RowCellCustomDrawEventArgs e)
        {
            if (e.Column == colName)
            {
                var age = Convert.ToInt32(gridView.GetRowCellValue(e.RowHandle, colAge));
                if (age < 18)
                    e.Appearance.BackColor = Color.FromArgb(0xFE, 0xDF, 0x98);
                else
                    e.Appearance.BackColor = Color.FromArgb(0xD2, 0xFD, 0x91);
            }
        }
    
    0 讨论(0)
  • 2021-01-06 14:29

    You can color the XtraGrid cells using Conditional Formatting feature:

    gridControl1.DataSource = new List<Person> { 
        new Person(){ Name = "John", Age = 25 },
        new Person(){ Name = "Mary", Age = 17 },
        new Person(){ Age = 17  },
        new Person(){ Name = "Ann" },
        new Person(){ Name = "Pit", Age = 5 },
    };
    StyleFormatCondition nameCondition = new StyleFormatCondition();
    nameCondition.Column = gridView1.Columns["Name"];
    nameCondition.Condition = FormatConditionEnum.Expression;
    nameCondition.Expression = "IsNullOrEmpty([Name])";
    nameCondition.Appearance.BackColor = Color.Red;
    nameCondition.Appearance.Options.UseBackColor = true;
    
    StyleFormatCondition ageCondition = new StyleFormatCondition();
    ageCondition.Column = gridView1.Columns["Age"];
    ageCondition.Condition = FormatConditionEnum.Expression;
    ageCondition.Expression = "[Age]<10";
    ageCondition.Appearance.BackColor = Color.Maroon;
    ageCondition.Appearance.Options.UseBackColor = true;
    
    gridView1.FormatConditions.AddRange(new StyleFormatCondition[] { 
        nameCondition, ageCondition
    });
    

    Result:
    XtraGrid Conditional Formatting

    Related Links:
    Customizing Appearances of Individual Rows and Cells
    Style Format Conditions
    Custom Painting (Samples)

    0 讨论(0)
提交回复
热议问题