我有一个XtraGridview绑定到通过Linq的数据源,当我检查一些复选框时,我需要将图像设置为单元格及其已有的值。 现在,当我选中复选框时,我在单元格中设置图像就好了但是消除了单元格值(数据)。 在CustomDrawCell事件上,我这样做
private void gridView_GD_CustomDrawCell(object sender, RowCellCustomDrawEventArgs e)
{
GridView view = sender as GridView;
string evento1 = Convert.ToString(view.GetRowCellValue(e.RowHandle, "Eve1"));
if (CVariables.Ficon_estado == 1)
{
if (evento1 == "06" || evento1 == "15")
{
if (e.Column.FieldName == "G1")
{
e.Handled = true;
Point pos = CalcPosition(e, imageCollection_16.Images[1]);
e.Graphics.DrawImage(imageCollection_16.Images[1], pos);
view.Columns["G1"].AppearanceCell.BackColor = Color.Transparent;
view.Columns["G1"].AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
}
}
}
else
{
view.Columns["G1"].AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
}
}
private Point CalcPosition(RowCellCustomDrawEventArgs e, Image img)
{
Point p = new Point();
p.X = e.Bounds.Location.X + (e.Bounds.Width - (img.Width * 3)) / 2;
p.Y = e.Bounds.Location.Y + (e.Bounds.Height - img.Height) / 2;
return p;
}
答案 0 :(得分:0)
由于您将 e.Handled 属性设置为true,因此单元格文本消失。设置此选项时,不会调用默认绘制机制。您仍然可以使用 e.Appearance.DrawString 方法手动绘制单元格文本。
e.Appearance.DrawString(e.Cache, e.DisplayText, e.Bounds);
另一种解决方案是使用RepositoryItemTextEdit.ContextImage显示图像。也就是说,您可以使用不同的上下文图像创建两个 RepositoryItemTextEdits ,并在GridView.CustomRowCellEdit事件处理程序中有条件地将它们分配给网格单元格。