国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

在GridControl控件上綁定圖片的幾種操作方式詳解

2019-10-29 21:01:11
字體:
來源:轉載
供稿:網友

我們知道,基于DevExpress的開發Winform的項目界面的時候,GridControl控件是經常用來綁定數據的,一般以常規的字符內容為主,有時候也會有圖片的顯示需要,那么如果顯示圖片,我們應該如何實現呢?本篇隨筆介紹基于原生GridControl控件的圖片綁定顯示操作和基于我封裝的分頁控件(封裝GridControl的分頁控件)兩種圖片綁定顯示的操作。

1、基于原生的GridControl控件圖片綁定

GridControl,控件,綁定圖片

綁定圖片,一般我們可以在單元格里面綁定byte[]類型或者Image類型,那么控件就會自動顯示圖片出來,當然我們也可以自定義對圖片路徑轉換為圖片然后顯示的,不過就是額外需要增加一些處理而已。

本例子針對這三種方式分別進行介紹,圖片的綁定操作。

為了方便演示,我們創建一個菜單對象類,然后構建一些數據用于列表的綁定操作,如下代碼所示。

/// <summary>  /// 模擬一個菜單的對象,包括各種類型的圖片信息  /// </summary>  public class MenuInfo  {    /// <summary>    /// 編號    /// </summary>    public string ID { get; set; }    /// <summary>    /// 圖標名稱    /// </summary>    public string Name { get; set; }    /// <summary>    /// 圖片路徑    /// </summary>    public string ImageFilePath {get;set;}    /// <summary>    /// 圖標字節    /// </summary>    public virtual byte[] EmbedIcon { get; set; }    /// <summary>    /// 圖標圖片對象    /// </summary>    public Image ImageIcon { get; set; }    /// <summary>    /// 構造函數    /// 為了展示的方便,在構造函數里面構造相應的數據    /// </summary>    public MenuInfo()    {      this.ID = Guid.NewGuid().ToString();      this.Name = "測試圖片菜單";      this.ImageFilePath = Path.Combine(System.Environment.CurrentDirectory, "app.ico");      if (File.Exists(this.ImageFilePath))      {        this.EmbedIcon = FileUtil.FileToBytes(this.ImageFilePath);        this.ImageIcon = ImageHelper.ImageFromUrl(this.ImageFilePath);      }    }

創建GridColumn的時候,我們可以利用GridVIew的擴展函數CreateColumn進行創建幾個不同的列,如下代碼所示。

public partial class FrmRepositoryItemImageEdit : BaseForm  {    public FrmRepositoryItemImageEdit()    {      InitializeComponent();      CreateGridView();    }    /// <summary>    /// 創建gridView1列表所需顯示的列    /// </summary>    private void CreateGridView()    {      //創建一個隱藏的ID列      this.gridView1.CreateColumn("ID", "ID").Visible = false;      //串一個名稱的列,并指定寬度      this.gridView1.CreateColumn("Name", "名稱", 150);      //創建一個圖片路徑的列,并指定它的編輯控件類型為RepositoryItemImageEdit      //并為這個列實現ParseEditValue的方法,用于解析路徑為具體的圖片顯示      this.gridView1.CreateColumn("ImageFilePath", "圖片路徑綁定", 100).CreateImageEdit().ParseEditValue += (s, e) =>      {        if (e.Value != null && e.Value is string && e.Value.ToString() != string.Empty)        {          e.Value = Image.FromFile(string.Concat(e.Value));          e.Handled = true;        }      };      //創建圖片字節的列,用于顯示圖片      this.gridView1.CreateColumn("EmbedIcon", "圖片字節綁定", 100);      //創建圖片對象的列,用于顯示圖片      this.gridView1.CreateColumn("ImageIcon", "圖片對象綁定", 100);    }

上面代碼是創建GridView所需要顯示的列信息,那么我們準備好數據源綁定到列表控件上就可以了,如下代碼所示。

/// <summary>/// 綁定列表數據/// </summary>private void BindData(){  //構造只有一個記錄的集合  List<MenuInfo> menuList = new List<MenuInfo>()  {    new MenuInfo()  };  //綁定數據源到列表控件上  this.gridControl1.DataSource = menuList;} 

2、基于分頁控件的圖片綁定

GridControl,控件,綁定圖片

很多時候,我們需要對數據庫的數據進行分頁顯示,以提高顯示的速度和效率,那么利用分頁控件就可以獲得很多這樣統一的界面和高效率顯示數據的好處,基于分頁控件的處理本質上和上面的過程差不多,不過處理的代碼需要變化一下,從而可以正常的實現圖片綁定顯示操作。

/// <summary>  /// 基于分頁控件的圖片顯示案例  /// </summary>  public partial class FrmRepositoryItemImageEdit2 : BaseForm  {    public FrmRepositoryItemImageEdit2()    {      InitializeComponent();      CreateGridView();    }    /// <summary>    /// 創建gridView1列表所需顯示的列    /// </summary>    private void CreateGridView()    {      this.winGridViewPager1.OnPageChanged += new EventHandler(winGridViewPager1_OnPageChanged);      this.winGridViewPager1.OnRefresh += new EventHandler(winGridViewPager1_OnRefresh);      this.winGridViewPager1.AppendedMenu = this.contextMenuStrip1;      this.winGridViewPager1.ShowLineNumber = true;      this.winGridViewPager1.BestFitColumnWith = false;//是否設置為自動調整寬度,false為不設置      this.winGridViewPager1.gridView1.DataSourceChanged += new EventHandler(gridView1_DataSourceChanged);    }    /// <summary>    /// 綁定數據后,分配各列的寬度    /// </summary>    private void gridView1_DataSourceChanged(object sender, EventArgs e)    {      //對圖片路徑的列,重新使用RepositoryItemPictureEdit類型      //然后對該列的控件的ParseEditValue和FormatEditValue函數進行實現,從而實現路徑到圖片的顯示      var edit = this.winGridViewPager1.gridView1.Columns.ColumnByFieldName("ImageFilePath").CreatePictureEdit();            edit.ParseEditValue += (s, se) =>      {        if (se.Value != null && se.Value.GetType() == typeof(string) && se.Value.ToString() != string.Empty)        {          if (File.Exists(string.Concat(se.Value)))          {            var picture = ImageHelper.ImageFromUrl(string.Concat(se.Value));            se.Value = picture;            se.Handled = true;          }        }      };      edit.FormatEditValue += (s, se) =>      {        if (File.Exists(string.Concat(se.Value)))        {          var picture = ImageHelper.ImageFromUrl(string.Concat(se.Value));          se.Value = picture;          se.Handled = true;        }      };      if (this.winGridViewPager1.gridView1.Columns.Count > 0 && this.winGridViewPager1.gridView1.RowCount > 0)      {        //統一設置100寬度        foreach (DevExpress.XtraGrid.Columns.GridColumn column in this.winGridViewPager1.gridView1.Columns)        {          column.Width = 120;        }        //可特殊設置特別的寬度        GridView gridView = this.winGridViewPager1.gridView1;        if (gridView != null)        {          //gridView.SetGridColumWidth("Note", 200);        }      }    }

而在分頁控件的數據綁定的時候,我們指定列名的中文名即可,如下代碼所示

/// <summary>    /// 綁定列表數據    /// </summary>    private void BindData()    {      #region 添加別名解析      this.winGridViewPager1.DisplayColumns = "Name,ImageFilePath,EmbedIcon,ImageIcon";      this.winGridViewPager1.AddColumnAlias("ID", "編號");      this.winGridViewPager1.AddColumnAlias("Name", "名稱");      this.winGridViewPager1.AddColumnAlias("ImageFilePath", "圖片路徑綁定");      this.winGridViewPager1.AddColumnAlias("EmbedIcon", "圖片字節綁定");      this.winGridViewPager1.AddColumnAlias("ImageIcon", "圖片對象綁定");      this.winGridViewPager1.gridView1.OptionsBehavior.Editable = true;      this.winGridViewPager1.gridView1.OptionsBehavior.ReadOnly = false;      #endregion      //構造只有一個記錄的集合      List<MenuInfo> menuList = new List<MenuInfo>()      {        new MenuInfo()      };      this.winGridViewPager1.DataSource = menuList;    }

以上就是基于GridControl控件上綁定圖片的幾種操作方式,方便我們在項目中參考使用。希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 上虞市| 石家庄市| 石门县| 宕昌县| 墨脱县| 景德镇市| 富源县| 得荣县| 新宾| 临猗县| 嘉祥县| 五华县| 中山市| 贵南县| 苗栗市| 时尚| 余干县| 哈尔滨市| 罗定市| 昌乐县| 绍兴县| 福贡县| 禹城市| 遂溪县| 辽中县| 华亭县| 东乌珠穆沁旗| 深圳市| 延边| 侯马市| 黔西| 阿坝| 繁峙县| 海丰县| 北宁市| 台中市| 湖北省| 都安| 平舆县| 武陟县| 科尔|