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
    这些事件在响应最终用户对单元格值的修改时触发。

04-02
<think>好的,我现在需要处理用户关于“cells”在编程或数据结构中的概念或用法的问题。首先,我需要明确用户的问题范围,可能涉及不同的上下文,比如编程中的单元格、数据结构中的单元,或者是电子表格中的单元格。用户可能希望了解这些不同场景下的定义和应用。 首先,我应该回顾常见的数据结构,如链表、数组、哈希表中的单元格。例如,链表中的节点可以视为一个cell,包含数据和指针。数组中的每个元素也是一个cell,存储特定类型的数据。哈希表中的bucket或entry也可以称为cell,存储键值对。 然后,考虑电子表格处理中的单元格,比如Excel或Google Sheets,每个单元格由行列标识,存储数据或公式。在数据处理库如Pandas中,DataFrame的每个元素也可以看作cell,通过行标签和列名访问。 接下来是编程语言中的内存单元,例如C语言中的指针操作,每个内存地址对应一个cell,存储变量值。或者函数式编程中的不可变数据结构,如Clojure的cell,可能与状态管理相关。 需要确保涵盖不同领域中的cell概念,并举出具体例子。例如,在链表中,每个节点cell包含数据和指向下一个节点的指针;在电子表格中,单元格的引用方式;在内存管理中,内存单元的读写操作。 还要注意引用用户提供的参考内容中的信息,比如用户提到的PHP匿名类和函数式编程的不可变数据结构,可能涉及cell在函数式编程中的应用,如状态管理单元。此外,用户提到的Pandas的列选择,可能与DataFrame中的cell操作相关,需要结合.loc[]或.iloc[]的用法。 需要检查是否有遗漏的方面,比如数据库中的存储单元是否也称为cell,或者其他特定领域的术语。确保覆盖主要领域,并提供清晰的解释和示例代码或结构图。 最后,生成相关问题,帮助用户进一步探索,例如cell在不同数据结构中的具体实现,性能比较,或者特定编程语言中的cell操作。确保问题具有针对性,能够引导用户深入理解。</think>### 关于编程与数据结构中的Cells概念 在编程和数据结构的上下文中,**Cell**(单元格)通常有以下几种含义和应用场景: --- #### 1. **数据结构中的基本单元** - **链表节点**:在链表中,每个节点可以视为一个`cell`,包含数据域和指针域。例如: ```python class Node: def __init__(self, data): self.data = data # 数据域 self.next = None # 指针域(指向下一个cell) ``` - **哈希表存储单元**:哈希表中的每个槽位(bucket)或条目(entry)也可称为`cell`,用于存储键值对[^1]。 --- #### 2. **电子表格与数据处理** - **电子表格单元格**:在Excel、Google Sheets或编程库(如Pandas)中,每个单元格由行和列唯一标识,用于存储数据或公式。例如: ```python import pandas as pd df = pd.DataFrame({'A': [1, 2], 'B': ['x', 'y']}) cell_value = df.loc[0, 'A'] # 获取第0行、列A的cell值(结果为1) ``` 通过`.loc[]`或`.iloc[]`可以精确操作特定单元格[^2]。 --- #### 3. **内存管理** - **内存单元**:在低级编程语言(如C/C++)中,内存地址对应的最小存储单元可视为`cell`,用于存储变量值。例如: ```c int *ptr = malloc(sizeof(int)); // 分配一个整型cell *ptr = 42; // 向该cell写入数据 ``` --- #### 4. **函数式编程与状态管理** - **不可变数据结构的单元**:在函数式编程中,`cell`可能指代不可变数据结构中的最小单位,例如Clojure中的`cell`用于状态管理。 --- #### 5. **神经网络与计算模型** - **计算单元**:在神经网络中,神经元(neuron)或LSTM网络中的记忆单元(memory cell)也被称为`cell`,用于处理时序数据。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值