Cells 单元

Goto Data Grid 数据网格

Cells 单元

Content Alignment 内容对齐

显示数值的数据网格单元格会将其内容向右对齐。显示其他类型数据的单元格将其内容向左排列。若要更改单元格内容对齐方式,请处理 ColumnView.RowCellDefaultAlignment 事件。

在这里插入图片描述

Selection Modes 选择模式

使用默认 Grid 设置,用户只能选择整行。将 GridOptionsSelection.MultiSelectMode 属性设置为 GridMultiSelectMode.CellSelect 值,以允许用户选择单个单元格。在此模式下,用户可以使用“Ctrl”和“Shift”键一次选择多个单元格。
在这里插入图片描述

  • GridView.SelectCell、GridView.SelectCells — 允许您选择单个单元格和/或单元格区域的方法。
  • GridView.GetSelectedCells — 返回所选单元格或这些单元格的父 Grid 列。

Display Text and Cell Value 显示文本和单元格值

单元格值是存储在数据源中的值。单元格的显示文本是向用户显示的值。当数据网格对数据进行排序或筛选时,它会处理单元格值(而不是显示文本)。您可以改为按单元格显示值对控件进行排序和筛选数据。为此,请使用 GridColumn.SortMode 和 GridColumn.FilterMode 属性。

某些 Grid 功能(例如,格式化)会改变向最终用户显示实际单元格值的方式。若要在不更改基础值的情况下手动修改单元格的显示文本,请处理 ColumnView.CustomColumnDisplayText 事件。在以下示例中,如果属于 “Length” 列的单元格的值大于 20,则不显示任何内容。

gridView.CustomColumnDisplayText += (sender, e) => {
        if(e.Column.FieldName == "Length") {
            double val = (double)e.Value;
            if (val > 20)
                e.DisplayText = string.Empty;
        }
    };

How to Place an Image in a Grid Cell 如何在网格单元格中放置图像

根据您的任务,您可以使用不同的技术在 Data Grid 单元格中显示图像(字形、图标、图片)。请注意,您不能使用 GridColumn.CellAppearance.Image 属性(数据网格忽略此设置)。

Editor Context Images 编辑器上下文图像

RepositoryItemTextEdit.ContextImageOptions 组允许您将光栅或矢量图标分配给 RepositoryItemTextEdit 对象。如果需要为所有列单元格显示相同的图标,并保持单元格文本可编辑,请使用此方法。

private void gridView1_CustomRowCellEdit(object sender, CustomRowCellEditEventArgs e)
{
    string fileName = FileUtil.getFileName("Cell");
    string filePath = DevExpress.Utils.FilesHelper.FindingFileName(Application.StartupPath, "\\img\\" + fileName, false);

    RepositoryItemTextEdit textEdit = new RepositoryItemTextEdit();
    textEdit.ContextImageOptions.Image = Image.FromFile(filePath); //Properties.Resources.Cell;

    if (e.Column.FieldName == "cash_opera" && e.CellValue.ToString() == "00828")
    {
        e.RepositoryItem = textEdit;
    }
}

在这里插入图片描述

Check Edit with Images 选中 Edit with Images

如果需要将布尔单元格值替换为图标,请为此列分配 Check Edit 编辑器。编辑器的 ImageOptions 属性允许您为“Checked”和“Unchecked”编辑器状态设置图标。您还需要将编辑器的 CheckBoxOptions.Style 属性设置为 “custom”。

view.OptionsSelection.MultiSelectMode = DevExpress.XtraGrid.Views.Grid.GridMultiSelectMode.CheckBoxRowSelect;
view.OptionsSelection.MultiSelect = true;
view.OptionsSelection.CheckBoxSelectorColumnWidth = 45;
view.OptionsSelection.ShowCheckBoxSelectorInColumnHeader = DevExpress.Utils.DefaultBoolean.False;

RepositoryItemCheckEdit checkEdit = gridControl1.RepositoryItems.Add("CheckEdit") as RepositoryItemCheckEdit;
checkEdit.ImageOptions.ImageChecked = Image.FromFile(FileUtil.getFilePath("勾选"));
checkEdit.ImageOptions.ImageUnchecked = Image.FromFile(FileUtil.getFilePath("取消"));
checkEdit.CheckBoxOptions.Style = DevExpress.XtraEditors.Controls.CheckBoxStyle.Custom;
gridView1.Columns["IsRead"].ColumnEdit = checkEdit;
gridControl1.RepositoryItems.Add(checkEdit);

Image Combo Box 图像组合框

如果单元格显示要替换为图像的枚举值,请使用链接到 ImageList 或 DevExpress 图像集合的 ImageComboBoxEdit 编辑器。

/*
 * 添加未绑定列
 */
GridColumn unboundColumn3 = gridView1.Columns.AddField("Severity");
unboundColumn3.UnboundDataType = typeof(System.Object);
unboundColumn3.Visible = true;
RepositoryItemImageComboBox imageCombo = gridControl1.RepositoryItems.Add("ImageComboBoxEdit") as RepositoryItemImageComboBox;
DevExpress.Utils.ImageCollection images = new DevExpress.Utils.ImageCollection();
images.AddImage(Image.FromFile(FileUtil.getFilePath("Minor.png")));
images.AddImage(Image.FromFile(FileUtil.getFilePath("Moderate.png")));
images.AddImage(Image.FromFile(FileUtil.getFilePath("Severe.png")));
imageCombo.SmallImages = images;
imageCombo.Items.Add(new ImageComboBoxItem("Minor", (short)1, 0));
imageCombo.Items.Add(new ImageComboBoxItem("Moderate", (short)2, 1));
imageCombo.Items.Add(new ImageComboBoxItem("Severe", (short)3, 2));
imageCombo.GlyphAlignment = DevExpress.Utils.HorzAlignment.Center;
gridView1.Columns["Severity"].ColumnEdit = imageCombo;
gridControl1.RepositoryItems.Add(imageCombo);

Conditional Formatting 条件格式

当您设置了静态图标来可视化不同的值或值范围时,建议使用此方法。在这种情况下,图标显示在单元格值旁边。

外观和条件格式

Fill Cells with Images 用图像填充单元格

使用 PictureEdit 编辑器用图像填充整个 Grid 单元格。

/*
 * 添加未绑定列 用图像填充单元格
 */
GridColumn unboundColumn4 = gridView1.Columns.AddField("Picture");
unboundColumn4.UnboundDataType = typeof(System.Object);
unboundColumn4.Visible = true;
unboundColumn4.Caption = "图像填充单元格";
RepositoryItemPictureEdit pictureEdit = gridControl1.RepositoryItems.Add("PictureEdit") as RepositoryItemPictureEdit;
pictureEdit.SizeMode = PictureSizeMode.Zoom;
pictureEdit.NullText = " ";
gridView1.Columns["Picture"].ColumnEdit = pictureEdit;
gridControl1.RepositoryItems.Add(pictureEdit);


private void gridView1_CustomUnboundColumnData(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs e)
{
	if ((e.Column.FieldName == "Picture") && e.IsGetData)
    {
        Image image = null;
        var cash_opera = (string)((DataRowView)e.Row)["cash_opera"];
        if (cash_opera.Equals("01828"))
        {
            image = Image.FromFile(FileUtil.getFilePath("Cell.bmp"));
        }
        else
        {
            image = Properties.Resources.Cell;
        }
        e.Value = image;
    }
}

HTML Formatting HTML 格式

使用 Image 标签将图像嵌入到单元格中。请注意,此方法使单元格不可编辑。

GridColumn unbound = new GridColumn();
unbound.UnboundDataType = typeof(string);
unbound.FieldName = "Html";
unbound.Visible = true;
unbound.Caption = "HTML";
gridView1.Columns.Add(unbound);

ImageCollection imageCollection1 = new ImageCollection();

RepositoryItemHypertextLabel htLabel = new RepositoryItemHypertextLabel();
htLabel.HtmlImages = imageCollection1;
gridControl1.RepositoryItems.Add(htLabel);
unbound.ColumnEdit = htLabel;

private void gridView1_CustomUnboundColumnData(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs e)
{
	if (e.Column.FieldName == "Html")
    {
        e.Value = "<a href='https://www.google.com'>Google</a>";
    }
}

Cell Merging Cell 合并

在 GridView 和 BandedGridView 视图中,具有相同值的单元格可以自动合并。请注意,合并依赖于单元格值,而不是单元格显示文本。

合并的单元格存在以下限制:

  • 最终用户无法编辑合并的单元格。
  • 行多选处于禁用状态。
  • 合并的行无法显示预览部分。如果 GridOptionsView.ShowPreview 选项设置为 true,则无论 GridOptionsView.AllowCellMerge 属性的值如何,都无法合并具有相同值的相邻单元格。
  • 忽略聚焦行和单元格的外观设置(GridViewAppearances.FocusedRow 和 GridViewAppearances.FocusedCell 属性)。
  • 用于绘制偶数行和奇数行的外观设置将被忽略(GridViewAppearances.EvenRow 和 GridViewAppearances.OddRow 属性)。

Related API 相关 API

  • GridOptionsView.AllowCellMerge — 为整个视图启用自动单元格合并。
  • OptionsColumn.AllowMerge — 仅对此列启用自动单元格合并。此属性优先于全局 GridOptionsView.AllowCellMerge 设置。
  • GridView.CellMerge — 此事件允许您实施自定义算法并手动合并单元格。
    在这里插入图片描述
// Trim e-mail addresses
private void gridView1_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e) {
    if (e.Column == colCreatorID) {
        string email = e.DisplayText;
        string domain = email.Substring(email.IndexOf('@') + 1);
        e.DisplayText = domain;
    }
}

// Custom cell merge
private void gridView1_CellMerge(object sender, DevExpress.XtraGrid.Views.Grid.CellMergeEventArgs e) {
    GridView view = sender as GridView;
    if(view == null) return;
    if (e.Column == colCreatorID) {
        string text1 = view.GetRowCellDisplayText(e.RowHandle1, colCreatorID);
        string text2 = view.GetRowCellDisplayText(e.RowHandle2, colCreatorID);
        e.Merge = (text1 == text2);
        e.Handled = true;
    }
}

Access Grid Cells in Code 在代码中访问网格单元格

  • ColumnView.GetRowCellDisplayText 和 ColumnView.GetRowCellValue
    返回单元格值并显示任何网格单元格的文本。

  • ColumnView.GetFocusedRowCellDisplayText 和 ColumnView.GetFocusedRowCellValue
    返回单元格值并显示属于当前焦点行的任何单元格的文本。

  • ColumnView.FocusedRowHandle 和 ColumnView.FocusedColumn
    设置聚焦的行和列以选择所需的单元格。

  • ColumnView.CellValueChanging 和 ColumnView.CellValueChanged
    这些事件在响应最终用户对单元格值的修改时触发。

本项目通过STM32F103C8T6单片机最小系统,连接正点原子ESP8266 WiFi模块,将模块设置为Station模式,并与电脑连接到同一个WiFi网络。随后,STM32F103C8T6单片机将数据发送到电脑所在的IP地址。 功能概述 硬件连接: STM32F103C8T6单片机与正点原子ESP8266 WiFi模块通过串口连接。 ESP8266模块通过WiFi连接到电脑所在的WiFi网络。 软件配置: 在STM32F103C8T6上配置串口通信,用于与ESP8266模块进行数据交互。 通过AT指令将ESP8266模块设置为Station模式,并连接到指定的WiFi网络。 配置STM32F103C8T6单片机,使其能够通过ESP8266模块向电脑发送数据。 数据发送: STM32F103C8T6单片机通过串口向ESP8266模块发送数据。 ESP8266模块将接收到的数据通过WiFi发送到电脑所在的IP地址。 使用说明 硬件准备: 准备STM32F103C8T6单片机最小系统板。 准备正点原子ESP8266 WiFi模块。 将STM32F103C8T6单片机与ESP8266模块通过串口连接。 软件准备: 下载并安装STM32开发环境(如Keil、STM32CubeIDE等)。 下载本项目提供的源代码,并导入到开发环境中。 配置与编译: 根据实际需求配置WiFi网络名称和密码。 配置电脑的IP地址,确保与ESP8266模块在同一网络中。 编译并下载程序到STM32F103C8T6单片机。 运行与测试: 将STM32F103C8T6单片机与ESP8266模块上电。 在电脑上打开网络调试工具(如Wireshark、网络调试助手等),监听指定端口。 观察电脑是否接收到来自STM32F103C8T6单片机发送的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值