C# DevExpress Xtra网格单元格图像重复多次
我在某些条件下在网格的特定单元格中设置图像,但是图像重复或显示为平铺,没有显示单个图像,我只想显示一个,我无法理解为什么会发生这种情况 屏幕截图: 这是我的密码:C# DevExpress Xtra网格单元格图像重复多次,c#,devexpress,xtragrid,devexpress-windows-ui,C#,Devexpress,Xtragrid,Devexpress Windows Ui,我在某些条件下在网格的特定单元格中设置图像,但是图像重复或显示为平铺,没有显示单个图像,我只想显示一个,我无法理解为什么会发生这种情况 屏幕截图: 这是我的密码: private void PendingTask_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e) { try { if (e.RowHandle < 0)
private void PendingTask_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e)
{
try
{
if (e.RowHandle < 0)
return;
int con = PendingTaskGridView.SortedColumns.Count;
DataModel.TaskToConfirm task = this.PendingTaskGridView.GetRow(e.RowHandle) as DataModel.TaskToConfirm;
if (task == null)
return;
if (e.Column.Name.Equals("gridColBilling", StringComparison.InvariantCultureIgnoreCase))
{
SetTaskStatusColor(e, task);
//SetTimeDifferenceColor(e, task);
}
if (e.Column.Name.Equals("gridColPunctuality", StringComparison.InvariantCultureIgnoreCase))
{
SetPunctualityColor(e, task);
//SetTimeDifferenceColor(e, task);
}
if (e.Column.Name.Equals("gridColAttendance", StringComparison.InvariantCultureIgnoreCase))
{
SetAttendanceColor(e, task);
//SetTimeDifferenceColor(e, task);
}
}
catch (Exception ex)
{
ApplicationExceptions.HandleAppExc(ex);
}
}
在这种情况下,
AppearanceObject.Image
属性用于指定单元格背景的填充模式。因此,您可以看到所有这些图像副本。我建议您使用事件在单元格边界内绘制单个图像,或者使用编辑器指定属性以基于单元格值显示不同的图像 相关帮助文章:
在资深同事的帮助下,我自己用Event和Event解决了这个问题 下面是DataSourceChanged事件,在该事件中,我将来自code behind的图像列添加为未绑定列,并将其
UnboundType
设置为Object
,并且必须将ColumnEdit
属性设置为ResposityItemPictureEdit
对象:
private void PendingTask_SourceChanged(object sender, EventArgs e)
{
AddImageColumns();
}
AddImageColumns():
private void AddImageColumns()
{
RepositoryItemPictureEdit pictureEdit = this.PendingTaskGrid.RepositoryItems.Add("PictureEdit") as RepositoryItemPictureEdit;
pictureEdit.SizeMode = PictureSizeMode.Zoom;
PendingTaskGridView.OptionsView.AnimationType = GridAnimationType.AnimateAllContent;
pictureEdit.NullText = " ";
if (this.PendingTaskGridView.Columns.ColumnByName("StatusImage") == null)
{
this.PendingTaskGridView.Columns.Add(new DevExpress.XtraGrid.Columns.GridColumn()
{
Caption = " ",
Name = "StatusImage",
FieldName = "StatusImage",
Visible = true,
UnboundType = DevExpress.Data.UnboundColumnType.Object,
VisibleIndex = 0,
Width = 25,
MaxWidth = 25,
ToolTip = "Task Status",
ColumnEdit = pictureEdit
});
}
if (this.PendingTaskGridView.Columns.ColumnByName("PunctualityImage") == null)
{
this.PendingTaskGridView.Columns.Add(new DevExpress.XtraGrid.Columns.GridColumn()
{
Caption = " ",
Name = "PunctualityImage",
FieldName = "PunctualityImage",
Visible = true,
UnboundType = DevExpress.Data.UnboundColumnType.Object,
VisibleIndex = 0,
Width = 25,
MaxWidth = 25,
ToolTip = "Punctuality",
ColumnEdit = pictureEdit
});
}
if (this.PendingTaskGridView.Columns.ColumnByName("AttendanceImage") == null)
{
this.PendingTaskGridView.Columns.Add(new DevExpress.XtraGrid.Columns.GridColumn()
{
Caption = " ",
Name = "AttendanceImage",
FieldName = "AttendanceImage",
Visible = true,
UnboundType = DevExpress.Data.UnboundColumnType.Object,
VisibleIndex = 0,
Width = 25,
MaxWidth = 25,
ToolTip = "IVR Attendance",
ColumnEdit = pictureEdit
});
}
}
private void PendingTaskGridView_CustomUnboundColumnData(object sender, CustomColumnDataEventArgs e)
{
if (e.Column.FieldName.Equals("StatusImage", StringComparison.InvariantCultureIgnoreCase))
{
SetStatusImage(e);
}
if (e.Column.FieldName.Equals("PunctualityImage", StringComparison.InvariantCultureIgnoreCase))
{
SetPunctualityImage(e);
}
if (e.Column.FieldName.Equals("AttendanceImage", StringComparison.InvariantCultureIgnoreCase))
{
SetAttendanceImage(e);
}
}
private void SetStatusImage(CustomColumnDataEventArgs e)
{
DataModel.TaskToConfirm task = e.Row as DataModel.TaskToConfirm;
if (task.BillingConfirmed)
e.Value = imageListGrid.Images[0];
else
e.Value = imageListGrid.Images[1];
}
private void SetPunctualityImage(CustomColumnDataEventArgs e)
{
DataModel.TaskToConfirm task = e.Row as DataModel.TaskToConfirm;
if (task.PunctualityStatus == (int)ePunctuality.Extra)
e.Value = CareGiver.Properties.Resources.Cancelled_Image;
else if (task.PunctualityStatus == (int)ePunctuality.Less)
e.Value = CareGiver.Properties.Resources.Update_CSD;
else
e.Value = CareGiver.Properties.Resources.Category_Green;
}
private void SetAttendanceImage(CustomColumnDataEventArgs e)
{
DataModel.TaskToConfirm task = e.Row as DataModel.TaskToConfirm;
if (task.AttendanceType == 2)
e.Value = imageList1.Images["auto"];
else if (task.AttendanceType == 1)
e.Value = imageList1.Images["manual"];
else if (task.AttendanceType == 0)
e.Value = imageList1.Images["default"];
}
CustomUnboundColumnData事件:
private void AddImageColumns()
{
RepositoryItemPictureEdit pictureEdit = this.PendingTaskGrid.RepositoryItems.Add("PictureEdit") as RepositoryItemPictureEdit;
pictureEdit.SizeMode = PictureSizeMode.Zoom;
PendingTaskGridView.OptionsView.AnimationType = GridAnimationType.AnimateAllContent;
pictureEdit.NullText = " ";
if (this.PendingTaskGridView.Columns.ColumnByName("StatusImage") == null)
{
this.PendingTaskGridView.Columns.Add(new DevExpress.XtraGrid.Columns.GridColumn()
{
Caption = " ",
Name = "StatusImage",
FieldName = "StatusImage",
Visible = true,
UnboundType = DevExpress.Data.UnboundColumnType.Object,
VisibleIndex = 0,
Width = 25,
MaxWidth = 25,
ToolTip = "Task Status",
ColumnEdit = pictureEdit
});
}
if (this.PendingTaskGridView.Columns.ColumnByName("PunctualityImage") == null)
{
this.PendingTaskGridView.Columns.Add(new DevExpress.XtraGrid.Columns.GridColumn()
{
Caption = " ",
Name = "PunctualityImage",
FieldName = "PunctualityImage",
Visible = true,
UnboundType = DevExpress.Data.UnboundColumnType.Object,
VisibleIndex = 0,
Width = 25,
MaxWidth = 25,
ToolTip = "Punctuality",
ColumnEdit = pictureEdit
});
}
if (this.PendingTaskGridView.Columns.ColumnByName("AttendanceImage") == null)
{
this.PendingTaskGridView.Columns.Add(new DevExpress.XtraGrid.Columns.GridColumn()
{
Caption = " ",
Name = "AttendanceImage",
FieldName = "AttendanceImage",
Visible = true,
UnboundType = DevExpress.Data.UnboundColumnType.Object,
VisibleIndex = 0,
Width = 25,
MaxWidth = 25,
ToolTip = "IVR Attendance",
ColumnEdit = pictureEdit
});
}
}
private void PendingTaskGridView_CustomUnboundColumnData(object sender, CustomColumnDataEventArgs e)
{
if (e.Column.FieldName.Equals("StatusImage", StringComparison.InvariantCultureIgnoreCase))
{
SetStatusImage(e);
}
if (e.Column.FieldName.Equals("PunctualityImage", StringComparison.InvariantCultureIgnoreCase))
{
SetPunctualityImage(e);
}
if (e.Column.FieldName.Equals("AttendanceImage", StringComparison.InvariantCultureIgnoreCase))
{
SetAttendanceImage(e);
}
}
private void SetStatusImage(CustomColumnDataEventArgs e)
{
DataModel.TaskToConfirm task = e.Row as DataModel.TaskToConfirm;
if (task.BillingConfirmed)
e.Value = imageListGrid.Images[0];
else
e.Value = imageListGrid.Images[1];
}
private void SetPunctualityImage(CustomColumnDataEventArgs e)
{
DataModel.TaskToConfirm task = e.Row as DataModel.TaskToConfirm;
if (task.PunctualityStatus == (int)ePunctuality.Extra)
e.Value = CareGiver.Properties.Resources.Cancelled_Image;
else if (task.PunctualityStatus == (int)ePunctuality.Less)
e.Value = CareGiver.Properties.Resources.Update_CSD;
else
e.Value = CareGiver.Properties.Resources.Category_Green;
}
private void SetAttendanceImage(CustomColumnDataEventArgs e)
{
DataModel.TaskToConfirm task = e.Row as DataModel.TaskToConfirm;
if (task.AttendanceType == 2)
e.Value = imageList1.Images["auto"];
else if (task.AttendanceType == 1)
e.Value = imageList1.Images["manual"];
else if (task.AttendanceType == 0)
e.Value = imageList1.Images["default"];
}
在方法:
private void AddImageColumns()
{
RepositoryItemPictureEdit pictureEdit = this.PendingTaskGrid.RepositoryItems.Add("PictureEdit") as RepositoryItemPictureEdit;
pictureEdit.SizeMode = PictureSizeMode.Zoom;
PendingTaskGridView.OptionsView.AnimationType = GridAnimationType.AnimateAllContent;
pictureEdit.NullText = " ";
if (this.PendingTaskGridView.Columns.ColumnByName("StatusImage") == null)
{
this.PendingTaskGridView.Columns.Add(new DevExpress.XtraGrid.Columns.GridColumn()
{
Caption = " ",
Name = "StatusImage",
FieldName = "StatusImage",
Visible = true,
UnboundType = DevExpress.Data.UnboundColumnType.Object,
VisibleIndex = 0,
Width = 25,
MaxWidth = 25,
ToolTip = "Task Status",
ColumnEdit = pictureEdit
});
}
if (this.PendingTaskGridView.Columns.ColumnByName("PunctualityImage") == null)
{
this.PendingTaskGridView.Columns.Add(new DevExpress.XtraGrid.Columns.GridColumn()
{
Caption = " ",
Name = "PunctualityImage",
FieldName = "PunctualityImage",
Visible = true,
UnboundType = DevExpress.Data.UnboundColumnType.Object,
VisibleIndex = 0,
Width = 25,
MaxWidth = 25,
ToolTip = "Punctuality",
ColumnEdit = pictureEdit
});
}
if (this.PendingTaskGridView.Columns.ColumnByName("AttendanceImage") == null)
{
this.PendingTaskGridView.Columns.Add(new DevExpress.XtraGrid.Columns.GridColumn()
{
Caption = " ",
Name = "AttendanceImage",
FieldName = "AttendanceImage",
Visible = true,
UnboundType = DevExpress.Data.UnboundColumnType.Object,
VisibleIndex = 0,
Width = 25,
MaxWidth = 25,
ToolTip = "IVR Attendance",
ColumnEdit = pictureEdit
});
}
}
private void PendingTaskGridView_CustomUnboundColumnData(object sender, CustomColumnDataEventArgs e)
{
if (e.Column.FieldName.Equals("StatusImage", StringComparison.InvariantCultureIgnoreCase))
{
SetStatusImage(e);
}
if (e.Column.FieldName.Equals("PunctualityImage", StringComparison.InvariantCultureIgnoreCase))
{
SetPunctualityImage(e);
}
if (e.Column.FieldName.Equals("AttendanceImage", StringComparison.InvariantCultureIgnoreCase))
{
SetAttendanceImage(e);
}
}
private void SetStatusImage(CustomColumnDataEventArgs e)
{
DataModel.TaskToConfirm task = e.Row as DataModel.TaskToConfirm;
if (task.BillingConfirmed)
e.Value = imageListGrid.Images[0];
else
e.Value = imageListGrid.Images[1];
}
private void SetPunctualityImage(CustomColumnDataEventArgs e)
{
DataModel.TaskToConfirm task = e.Row as DataModel.TaskToConfirm;
if (task.PunctualityStatus == (int)ePunctuality.Extra)
e.Value = CareGiver.Properties.Resources.Cancelled_Image;
else if (task.PunctualityStatus == (int)ePunctuality.Less)
e.Value = CareGiver.Properties.Resources.Update_CSD;
else
e.Value = CareGiver.Properties.Resources.Category_Green;
}
private void SetAttendanceImage(CustomColumnDataEventArgs e)
{
DataModel.TaskToConfirm task = e.Row as DataModel.TaskToConfirm;
if (task.AttendanceType == 2)
e.Value = imageList1.Images["auto"];
else if (task.AttendanceType == 1)
e.Value = imageList1.Images["manual"];
else if (task.AttendanceType == 0)
e.Value = imageList1.Images["default"];
}
感谢您的回复,但我通过其他方式解决了这个问题,我也将其发布为答案NP,但根据我的经验,使用RepositoryImageCombobox比创建未绑定列要有效得多…我对devexpress控件非常陌生,我的高级同事指导我这样做…:)但我感谢您的努力…:)