gridView里面我想让一列显示为图片,并且每一行的这一列的图片会根据系统状态的改变而改变,我为该列设置了一个repositoryItemImageEdit。但好像改变他的属性所有行的图片都变了。有人能帮帮忙么?
另外这里有个讨论群:21922910 有这方面经验的或者正在研究这个控件的请进来一起探讨下。

解决方案 »

  1.   

    你应该一开始时就把所有要用到的图片填充到ImageComboBoxEdit,
    然后改变其EditValue来改变显示的图片和文字。
      

  2.   

    对啊我就是在程序开始的时候给repositoryItemImageEdit赋值了一个ImgList但我没法对应每一行进行超作,要改都改了
      

  3.   

    需要重载一个事件的响应函数来解决,忘了是哪一个了,不过在dev的文档中有这个函数的详细介绍,不妨找找看
      

  4.   

    我发现这个控件提供的gridView好像没有Row的概念
      

  5.   

    的确
    我今天在搞行定位的时候才发现GridView好像没有行与列的集合
    郁闷
    还没找到
    楼主试试PictureBox呢
    我看Demo中的图片都是用二进制保存在数据库中的
    你也可以试试啊
      

  6.   

    GridView好像没有行与列的集合
    =========
    GridView的行只有RowHandle的说法,比如RowHandle = 0指第一行,
    对于用GridView.AddNewRow()新建的行,其RowHandle = GridControl.NewRowHandle
    对于当前行的RowHandle可以用GridView.FocuedRowHandle来得到设置当前行的值可以用GridView.SetFocusedRowCellValue()方法,
    设置指定RowHandle的值可以用GridView.SetRowCellValue()方法。列的话,是有集合的:gridview.Columns
      

  7.   

    SetFocusedRowCellValue()的方法我尝试过了,参数是一个Object对象。可当我把那一列设置为repositoryItemImageEdit属性的时候,会报错,不信你试试看。
      

  8.   

    设置某列为ImageEdit:
    RepositoryItemImageEdit riMemoEdit = new RepositoryItemImageEdit();
    gridControl1.RepositoryItems.Add(riImageEdit);
    gridView1.Columns["Logo"].ColumnEdit = riImageEdit;SetRowCellValue(GridView.FocusedRowHandle, "图像列名", 值)
    这个值可以设置为Image类的实例.不过你还可能用一下RepositoryItemPictureEdit,二者的区别,好像是ImageEdit可以多显示一个按钮(一般是下拉按钮),图片要下拉后才真正显示,而PictureEdit直接显示真正的图片,没有下拉按钮。
      

  9.   

    兄台你所说的Image类的实例我试了下,不行啊!提示我“对象必须实现Iconvertible”。
      

  10.   

    不好意思
    给你个例子:
                Image image = Image.FromFile(@"C:\b56.jpg");
                MemoryStream memoryStream = new MemoryStream();
                image.Save(memoryStream, ImageFormat.Jpeg);
                gridView1.SetRowCellValue(gridView1.FocusedRowHandle, "photo", memoryStream.ToArray());
      

  11.   

    我靠,这是哪年的帖子哦 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;
                }
            }