在GridView列表中使用圖片顯示記錄是否包含附件


在我的前面很多文章中,都介紹過通用附件模塊的管理,本篇隨筆主要介紹在一些應用模塊中的列表展示中,包含附件的記錄,在GridView列表界面中使用圖標來快速顯示是否有附件的情況。

1、通用附件模塊的應用界面效果

例如在我的《通用人員信息管理模塊》中(可以參考隨筆《Winform開發框架之通用人員信息管理》、《Winform開發框架之通用人員信息管理實現代碼介紹》,很多都使用了《通用附件管理模塊》(可以參考《Winform開發框架之附件管理應用》來處理附件信息。如下界面所示。

但有時我們在列表中展示主要的數據的時候,我們希望知道哪一條記錄是否包含附件,以便我們快速查看相關的附件的時候,如下所示的展示效果,我們需要怎么做呢?

2、具體實現代碼

首先我們在綁定數據操作中增加一個字段列,用來在GridView列表中進行展示是否有附件的圖標的,我們定義為 HasAttachment,然后判斷附件列表中是否存在附件,並賦值給存在附件的列,具體邏輯代碼如下所示。

        /// <summary>
        /// 綁定列表數據
        /// </summary>
        public void BindData()
        {
            //entity
            this.winGridViewPager1.DisplayColumns = "Seq,Category,Title,HasAttachment";
            #region 添加別名解析

            this.winGridViewPager1.AddColumnAlias("Seq", "序號");
            this.winGridViewPager1.AddColumnAlias("Category", "科研情況類別");
            this.winGridViewPager1.AddColumnAlias("Title", "標題信息");
            this.winGridViewPager1.AddColumnAlias("AttachGUID", "附件GUID");
            this.winGridViewPager1.AddColumnAlias("HasAttachment", "附件信息");

            #endregion

            string where = GetConditionSql();
            DataTable dt = WHC.Framework.ControlUtil.BLLFactory<StaffResearch>.Instance.FindToDataTable(where);
            if (dt != null)
            {
                dt.Columns.Add("HasAttachment", typeof(Image));
                foreach (DataRow dr in dt.Rows)
                {
                    string attachGUID = dr["AttachGUID"].ToString();
                    Dictionary<string, string> list = WHC.Framework.ControlUtil.BLLFactory<WHC.Attachment.BLL.FileUpload>.Instance.GetFileNames(attachGUID);
                    if (list.Count > 0)
                    {
                        dr["HasAttachment"] = WHC.StaffData.Properties.Resources.attach2;
                    }
                }
            }

            this.winGridViewPager1.DataSource = dt;
            this.winGridViewPager1.PrintTitle = "人員科研情況信息報表";
        }

然后我們就是需要在GridView顯示的時候,進行一些處理工作,如定義這個HasAttachment列的顯示類型,並限定它的寬度等操作,以便進行更好的展示,如下代碼所示。

            this.winGridViewPager1.gridView1.DataSourceChanged += new EventHandler(gridView1_DataSourceChanged);
        /// <summary>
        /// 綁定數據后,分配各列的寬度
        /// </summary>
        private void gridView1_DataSourceChanged(object sender, EventArgs e)
        {
            if (this.winGridViewPager1.gridView1.Columns.Count > 0 && this.winGridViewPager1.gridView1.RowCount > 0)
            {
                this.winGridViewPager1.gridView1.Columns["Seq"].Width = 50;
                this.winGridViewPager1.gridView1.Columns["Category"].Width = 50;
                this.winGridViewPager1.gridView1.Columns["Title"].Width = 200;

                RepositoryItemPictureEdit pic = new RepositoryItemPictureEdit();
                pic.SizeMode = DevExpress.XtraEditors.Controls.PictureSizeMode.Zoom;
                pic.NullText = " ";
                pic.BestFitWidth = 80;
                this.winGridViewPager1.gridView1.Columns["HasAttachment"].ColumnEdit = pic;
                this.winGridViewPager1.gridView1.Columns["HasAttachment"].MaxWidth = 100;
                this.winGridViewPager1.gridView1.Columns["HasAttachment"].MinWidth = 80;
            }
        }

完成上面的幾步操作,我們就能在GridView中正常顯示一個圖標了,通過這個案例,我們拓展開來,可以在GridView中展示更好的效果,例如可以把一些字段的Image圖形數據讀取出來並展示出來等操作。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM