用过DevExpress控件的兄弟进来,有个比较棘手的问题。 gridView里面我想让一列显示为图片,并且每一行的这一列的图片会根据系统状态的改变而改变,我为该列设置了一个repositoryItemImageEdit。但好像改变他的属性所有行的图片都变了。有人能帮帮忙么?另外这里有个讨论群:21922910 有这方面经验的或者正在研究这个控件的请进来一起探讨下。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你应该一开始时就把所有要用到的图片填充到ImageComboBoxEdit,然后改变其EditValue来改变显示的图片和文字。 对啊我就是在程序开始的时候给repositoryItemImageEdit赋值了一个ImgList但我没法对应每一行进行超作,要改都改了 需要重载一个事件的响应函数来解决,忘了是哪一个了,不过在dev的文档中有这个函数的详细介绍,不妨找找看 我发现这个控件提供的gridView好像没有Row的概念 的确我今天在搞行定位的时候才发现GridView好像没有行与列的集合郁闷还没找到楼主试试PictureBox呢我看Demo中的图片都是用二进制保存在数据库中的你也可以试试啊 GridView好像没有行与列的集合=========GridView的行只有RowHandle的说法,比如RowHandle = 0指第一行,对于用GridView.AddNewRow()新建的行,其RowHandle = GridControl.NewRowHandle对于当前行的RowHandle可以用GridView.FocuedRowHandle来得到设置当前行的值可以用GridView.SetFocusedRowCellValue()方法,设置指定RowHandle的值可以用GridView.SetRowCellValue()方法。列的话,是有集合的:gridview.Columns SetFocusedRowCellValue()的方法我尝试过了,参数是一个Object对象。可当我把那一列设置为repositoryItemImageEdit属性的时候,会报错,不信你试试看。 设置某列为ImageEdit:RepositoryItemImageEdit riMemoEdit = new RepositoryItemImageEdit();gridControl1.RepositoryItems.Add(riImageEdit);gridView1.Columns["Logo"].ColumnEdit = riImageEdit;SetRowCellValue(GridView.FocusedRowHandle, "图像列名", 值)这个值可以设置为Image类的实例.不过你还可能用一下RepositoryItemPictureEdit,二者的区别,好像是ImageEdit可以多显示一个按钮(一般是下拉按钮),图片要下拉后才真正显示,而PictureEdit直接显示真正的图片,没有下拉按钮。 兄台你所说的Image类的实例我试了下,不行啊!提示我“对象必须实现Iconvertible”。 不好意思给你个例子: Image image = Image.FromFile(@"C:\b56.jpg"); MemoryStream memoryStream = new MemoryStream(); image.Save(memoryStream, ImageFormat.Jpeg); gridView1.SetRowCellValue(gridView1.FocusedRowHandle, "photo", memoryStream.ToArray()); 我靠,这是哪年的帖子哦 private void gridViewVIP_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e) { Brush backBrush = null, foreBrush = null; if (e.RowHandle >= 0) { if (e.RowHandle == gridViewVIP.FocusedRowHandle) { //如果是当前获取焦点的行 backBrush = new SolidBrush(Color.DarkBlue); foreBrush = new SolidBrush(Color.PeachPuff); } else if (e.Column.Name == this.gridColumnState.Name) { string str = ""; str = this.gridViewVIP.GetRowCellValue(e.RowHandle, "state").ToString();//根据状态换图片 if (str != "0") { e.Graphics.DrawImage(Properties.Resources.red, e.Bounds.Width / 2 + 4, e.Bounds.Y, e.Bounds.Height, e.Bounds.Height); } else { e.Graphics.DrawImage(Properties.Resources.green, e.Bounds.Width / 2 + 4, e.Bounds.Y, e.Bounds.Height, e.Bounds.Height); } e.Handled = true; return; } else { return; } // filling the background e.Graphics.FillRectangle(backBrush, e.Bounds); // painting node value e.Graphics.DrawString(e.DisplayText, e.Appearance.Font, foreBrush, e.Bounds, e.Appearance.GetStringFormat()); // prohibiting default painting e.Handled = true; } } 列前缀 'System.Data' 与查询中所用的表名或别名不匹配 C#连接数据库问题 一个关于datagridview保存新增数据到数据库的问题,高手请进! 怎样在ASPxGridView中的某一字段绑定控件?详细内容请看~~ 一个小问题,请回答一下 急~~在线等,解决马上结帖~dropdownlist选好对应值后在TEXTBOX中改为对应的值~ 求用C#写的OutLook风格的界面 这个问题有谁懂,进来看一下谢谢 C#windows应用台仿qq登陆注册程序求大神帮忙 强烈推荐C#好书——电力的《C#程序设计》! 请各位推存几个好的c#论坛或网站。 C#调用xx.lib,xx.h的方法?
然后改变其EditValue来改变显示的图片和文字。
我今天在搞行定位的时候才发现GridView好像没有行与列的集合
郁闷
还没找到
楼主试试PictureBox呢
我看Demo中的图片都是用二进制保存在数据库中的
你也可以试试啊
=========
GridView的行只有RowHandle的说法,比如RowHandle = 0指第一行,
对于用GridView.AddNewRow()新建的行,其RowHandle = GridControl.NewRowHandle
对于当前行的RowHandle可以用GridView.FocuedRowHandle来得到设置当前行的值可以用GridView.SetFocusedRowCellValue()方法,
设置指定RowHandle的值可以用GridView.SetRowCellValue()方法。列的话,是有集合的:gridview.Columns
RepositoryItemImageEdit riMemoEdit = new RepositoryItemImageEdit();
gridControl1.RepositoryItems.Add(riImageEdit);
gridView1.Columns["Logo"].ColumnEdit = riImageEdit;SetRowCellValue(GridView.FocusedRowHandle, "图像列名", 值)
这个值可以设置为Image类的实例.不过你还可能用一下RepositoryItemPictureEdit,二者的区别,好像是ImageEdit可以多显示一个按钮(一般是下拉按钮),图片要下拉后才真正显示,而PictureEdit直接显示真正的图片,没有下拉按钮。
给你个例子:
Image image = Image.FromFile(@"C:\b56.jpg");
MemoryStream memoryStream = new MemoryStream();
image.Save(memoryStream, ImageFormat.Jpeg);
gridView1.SetRowCellValue(gridView1.FocusedRowHandle, "photo", memoryStream.ToArray());
{
Brush backBrush = null, foreBrush = null; if (e.RowHandle >= 0)
{
if (e.RowHandle == gridViewVIP.FocusedRowHandle)
{
//如果是当前获取焦点的行
backBrush = new SolidBrush(Color.DarkBlue);
foreBrush = new SolidBrush(Color.PeachPuff);
}
else if (e.Column.Name == this.gridColumnState.Name)
{
string str = "";
str = this.gridViewVIP.GetRowCellValue(e.RowHandle, "state").ToString();
//根据状态换图片
if (str != "0")
{
e.Graphics.DrawImage(Properties.Resources.red, e.Bounds.Width / 2 + 4, e.Bounds.Y, e.Bounds.Height, e.Bounds.Height);
}
else
{
e.Graphics.DrawImage(Properties.Resources.green, e.Bounds.Width / 2 + 4, e.Bounds.Y, e.Bounds.Height, e.Bounds.Height);
} e.Handled = true; return;
}
else
{
return;
} // filling the background
e.Graphics.FillRectangle(backBrush, e.Bounds);
// painting node value
e.Graphics.DrawString(e.DisplayText, e.Appearance.Font, foreBrush, e.Bounds,
e.Appearance.GetStringFormat()); // prohibiting default painting
e.Handled = true;
}
}