首页 > 其他分享 >DevExpress中TileView的使用

DevExpress中TileView的使用

时间:2024-01-05 17:01:19浏览次数:42  
标签:set get DevExpress TileView System herodDto 使用 using public

 1、前期准备

VS2019、DevExpress19.2、MySql5.7、FreeSql3.2.808、.Net Farmework 4.8

2、创建本次示例中所需数据库及表

我这里建立的数据库为loldb,其下会使用到hero和country两个表

3、在VS2019进行代码实现

1、首先在vs2019中建立一个WinForm窗体,并取名TileViewDemo

 

2、窗体创建完成后引入我们本次会使用到的dll文件

Dev类目dll文件引用时需要我们在系统中确保已经安装了DevExpress19.2

FreeSql类目dll文件可以通过NuGet手动下载对应版本

 

3、为了美观,可设置为DevExpress窗体

4、回到设计界面,在工具箱中找到对应控件

找到GridControl控件拖拽至主界面中,并将该控件Dock设置为Fill。

转换view为TileView

5、点击Run Designer进行内容设计

 添加column列表,并对一些特殊column进行设置

Views设置

Layout设置

 Tile Template设置

 

 

6、创建数据库连接类

 

7、创建Domain

 

 hero表

using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using FreeSql.DataAnnotations;

namespace Domain {

	[JsonObject(MemberSerialization.OptIn)]
	public partial class hero {

		[JsonProperty, Column(IsPrimary = true, IsIdentity = true)]
		public int N_Id { get; set; }

		[JsonProperty]
		public int CountryId { get => _CountryId; set {
			if (_CountryId == value) return;
			_CountryId = value;
			country = null;
		} }
		private int _CountryId;

		[JsonProperty]
		public string ImgSrc { get; set; }

		[JsonProperty]
		public string Name { get; set; }

		[JsonProperty]
		public string NickName { get; set; }

		[JsonProperty]
		public Sex Sex { get; set; }


		#region 外键 => 导航属性,ManyToOne/OneToOne

		[Navigate("CountryId")]
		public virtual country country { get; set; }

		#endregion

		#region 外键 => 导航属性,ManyToMany

		#endregion
	}

	public enum Sex {
		女,
		男
	}
}

 

8、关键代码

 

using Domain;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TileViewDemo
{
    public partial class MainForm : DevExpress.XtraEditors.XtraForm
    {
        public MainForm()
        {
            InitializeComponent();
        }

        private void MainForm_Load(object sender, EventArgs e)
        {
            Global.Instance.ConnnectionServer(out string exMsg);
            if (!string.IsNullOrEmpty(exMsg))
            {
                MessageBox.Show("数据库连接失败:" + exMsg);
                return;
            }
            List<hero> heroes = Global.Instance.freeSql.Select<hero>().Include(a => a.country).ToList();
            List<herodDto> heroDtos = new List<herodDto>();
            foreach (var item in heroes)
            {
                herodDto herodDto = new herodDto()
                {
                    Id = item.N_Id,
                    Photo = Image.FromFile(item.ImgSrc),
                    Name = item.Name,
                    NickName = item.NickName,
                    Sex = item.Sex,
                    CountryName = item.country.CountryName
                };
                heroDtos.Add(herodDto);
            }
            gc_DataList.DataSource = heroDtos;
        }

        /// <summary>
        /// 定制每个卡片
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tv_DataList_ItemCustomize(object sender, DevExpress.XtraGrid.Views.Tile.TileViewItemCustomizeEventArgs e)
        {
            if (e.Item == null || e.Item.Elements.Count == 0)
                return;
            int sex = (int)tv_DataList.GetRowCellValue(e.RowHandle, tv_DataList.Columns["Sex"]);

            Color female = Color.LightBlue;
            Color male = Color.DarkRed;

            e.Item.Elements[5].Text = String.Empty;
            if (sex == 1)
                e.Item.Elements[5].Appearance.Normal.BackColor = female;
            else
                e.Item.Elements[5].Appearance.Normal.BackColor = male;
        }

        /// <summary>
        /// 每个卡片的点击事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tv_DataList_ItemClick(object sender, DevExpress.XtraGrid.Views.Tile.TileViewItemClickEventArgs e)
        {
            herodDto herodDto = tv_DataList.GetRow(e.Item.RowHandle) as herodDto;
            herodDto.IsSelect = !herodDto.IsSelect;
            tv_DataList.RefreshRow(e.Item.RowHandle);
        }
    }

    public class herodDto
    {
        public int Id { get; set; }
        public Image Photo { get; set; }
        public string Name { get; set; }
        public string NickName { get; set; }
        public Sex Sex { get; set; }
        public string CountryName { get; set; }
        public bool IsSelect { get; set; } = true;
    }
}

 

9、实际显示

 

标签:set,get,DevExpress,TileView,System,herodDto,使用,using,public
From: https://www.cnblogs.com/icarec/p/17926092.html

相关文章

  • 如何使用Go语言进行数据库操作
    如何使用Go语言进行数据库操作 https://www.php.cn/faq/587088.html引言:Go语言是一种高效且简洁的编程语言,拥有强大的并发能力和优秀的性能表现。在开发过程中,与数据库的交互是一个非常重要的环节。本文将介绍如何使用Go语言进行数据库操作,包括连接数据库、CRUD操作以及事务处理......
  • 第5章 在 ASP.NET Core Web 应用进程中使用 EF Core
    本章涵盖在ASP.NETCore中使用EFCore在ASP.NETCore中使用依赖注入在ASP.NET核心MVC操作中访问数据库使用EFCore迁移更新数据库使用async/await提高可扩展性在本章中,您将使用ASP.NETCore构建一个真正的Web应用进程,将所有内容集成在一起。当然,使用ASP.N......
  • 第4章 在业务逻辑中使用 EF Core
    本章涵盖了解业务逻辑及其对EFCore的使用从简单到复杂的三种业务逻辑审查每种类型的业务逻辑,包括优缺点添加一个步骤,用于在将数据写入数据库之前验证数据使用事务以菊花链方式连接代码串行实际应用进程旨在提供一组服务,从在计算机上保存简单的事物列表到类似管理核反应......
  • 第6章 使用EF Core进行读写操作的技巧
    本章涵盖选择正确的方法从数据库中读取数据编写在数据库端表现良好的查询避免使用查询筛选器和特殊LINQ命令时出现问题使用AutoMapper更快地编写Select查询编写代码以快速复制和删除数据库中的实体前四章介绍了读取/写入数据库的不同方法,在第5章中,您使用这些信息......
  • 【Redis深度专题】「核心技术提升」从源码角度探究Redis服务的内存使用、清理以及逐出
    背景介绍Redis作为一种高性能的内存NoSQL数据库,其容量受限于最大内存的限制。用户在使用阿里云Redis时,除了对性能和稳定性有较高的要求外,对内存占用也非常敏感。然而,在实际使用中,一些用户可能会发现他们的线上实例的内存占用比预期的要大。内存较高的场景在使用Redis时,以下是一些可......
  • requests库和requests模块使用详解
    一、requests简介#简介:使用requests可以模拟浏览器的请求,比起之前用的urllib,requests模块的api更加便捷(本质就是封装了urllib3)#注意:requests库发送请求将网页内容下载下来以后,并不会执行js代码,这需要我们自己分析目标站点然后发起新的request请求#安装:pip3installrequest......
  • 前端排除项目中未使用资源脚本
    importosclassFileData:def__init__(self,name,path):self.name=nameself.path=path#遍历项目文件夹中的所有图片文件image_files=[]defget_all_image_files(folder):forroot,dirs,filesinos.walk(folder):forfile......
  • Linux中cd命令有何作用?如何使用?
    Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。在Linux中拥有诸多命令,为我们的工作带来便利,提高效率,那么Linux中进入目录命令是什么?以下是详细内容介绍。Linux中进入目录命令是cd,cd命令用于在Linux......
  • 使用 vve-i18n-cli 来一键式自动化实现国际化
    【Github:vue-viewer-editor/vve-i18n-cli】这是我同事开发的国际化自动处理脚本,我进行过一次扩展,让其也支持我们一个jQuery老项目的国际化日常维护至此,我们团队内的国际化均是使用该脚本来进行日常维护该自动化脚本极大的为我们提效,基本将国际化的词条相关工作降低到0了,这......
  • webview2 使用方法
    MicrosoftEdgeWebView2简介MicrosoftEdgeWebView2是一个基于Chromium的Web浏览器控件,可以嵌入到Windows应用程序中。它提供了一组API,用于在应用程序中显示Web内容,并与Web内容进行交互。安装MicrosoftEdgeWebView2运行环境方法1:windows系统中自身已安装MicrosoftE......