翼度科技»论坛 编程开发 .net 查看内容

DevExpress中TileView的使用

4

主题

4

帖子

12

积分

新手上路

Rank: 1

积分
12
 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表
  1. using System;
  2. using System.Collections.Generic;
  3. using Newtonsoft.Json;
  4. using FreeSql.DataAnnotations;
  5. namespace Domain {
  6.         [JsonObject(MemberSerialization.OptIn)]
  7.         public partial class hero {
  8.                 [JsonProperty, Column(IsPrimary = true, IsIdentity = true)]
  9.                 public int N_Id { get; set; }
  10.                 [JsonProperty]
  11.                 public int CountryId { get => _CountryId; set {
  12.                         if (_CountryId == value) return;
  13.                         _CountryId = value;
  14.                         country = null;
  15.                 } }
  16.                 private int _CountryId;
  17.                 [JsonProperty]
  18.                 public string ImgSrc { get; set; }
  19.                 [JsonProperty]
  20.                 public string Name { get; set; }
  21.                 [JsonProperty]
  22.                 public string NickName { get; set; }
  23.                 [JsonProperty]
  24.                 public Sex Sex { get; set; }
  25.                 #region 外键 => 导航属性,ManyToOne/OneToOne
  26.                 [Navigate("CountryId")]
  27.                 public virtual country country { get; set; }
  28.                 #endregion
  29.                 #region 外键 => 导航属性,ManyToMany
  30.                 #endregion
  31.         }
  32.         public enum Sex {
  33.                 女,
  34.                 男
  35.         }
  36. }
复制代码
 
8、关键代码

 
  1. using Domain;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.Data;
  6. using System.Drawing;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows.Forms;
  11. namespace TileViewDemo
  12. {
  13.     public partial class MainForm : DevExpress.XtraEditors.XtraForm
  14.     {
  15.         public MainForm()
  16.         {
  17.             InitializeComponent();
  18.         }
  19.         private void MainForm_Load(object sender, EventArgs e)
  20.         {
  21.             Global.Instance.ConnnectionServer(out string exMsg);
  22.             if (!string.IsNullOrEmpty(exMsg))
  23.             {
  24.                 MessageBox.Show("数据库连接失败:" + exMsg);
  25.                 return;
  26.             }
  27.             List<hero> heroes = Global.Instance.freeSql.Select<hero>().Include(a => a.country).ToList();
  28.             List<herodDto> heroDtos = new List<herodDto>();
  29.             foreach (var item in heroes)
  30.             {
  31.                 herodDto herodDto = new herodDto()
  32.                 {
  33.                     Id = item.N_Id,
  34.                     Photo = Image.FromFile(item.ImgSrc),
  35.                     Name = item.Name,
  36.                     NickName = item.NickName,
  37.                     Sex = item.Sex,
  38.                     CountryName = item.country.CountryName
  39.                 };
  40.                 heroDtos.Add(herodDto);
  41.             }
  42.             gc_DataList.DataSource = heroDtos;
  43.         }
  44.         /// <summary>
  45.         /// 定制每个卡片
  46.         /// </summary>
  47.         /// <param name="sender"></param>
  48.         /// <param name="e"></param>
  49.         private void tv_DataList_ItemCustomize(object sender, DevExpress.XtraGrid.Views.Tile.TileViewItemCustomizeEventArgs e)
  50.         {
  51.             if (e.Item == null || e.Item.Elements.Count == 0)
  52.                 return;
  53.             int sex = (int)tv_DataList.GetRowCellValue(e.RowHandle, tv_DataList.Columns["Sex"]);
  54.             Color female = Color.LightBlue;
  55.             Color male = Color.DarkRed;
  56.             e.Item.Elements[5].Text = String.Empty;
  57.             if (sex == 1)
  58.                 e.Item.Elements[5].Appearance.Normal.BackColor = female;
  59.             else
  60.                 e.Item.Elements[5].Appearance.Normal.BackColor = male;
  61.         }
  62.         /// <summary>
  63.         /// 每个卡片的点击事件
  64.         /// </summary>
  65.         /// <param name="sender"></param>
  66.         /// <param name="e"></param>
  67.         private void tv_DataList_ItemClick(object sender, DevExpress.XtraGrid.Views.Tile.TileViewItemClickEventArgs e)
  68.         {
  69.             herodDto herodDto = tv_DataList.GetRow(e.Item.RowHandle) as herodDto;
  70.             herodDto.IsSelect = !herodDto.IsSelect;
  71.             tv_DataList.RefreshRow(e.Item.RowHandle);
  72.         }
  73.     }
  74.     public class herodDto
  75.     {
  76.         public int Id { get; set; }
  77.         public Image Photo { get; set; }
  78.         public string Name { get; set; }
  79.         public string NickName { get; set; }
  80.         public Sex Sex { get; set; }
  81.         public string CountryName { get; set; }
  82.         public bool IsSelect { get; set; } = true;
  83.     }
  84. }
复制代码
 
9、实际显示


 

来源:https://www.cnblogs.com/icarec/Undeclared/17926092.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具