Making ExtJS 4 grid content selectable

在 ExtJS 4 中,Grid 是一个非常强大的组件,可用于展示大量数据。然而,默认情况下,Grid 中的内容是不可选的,这可能会使用户无法复制/粘贴或进行其他与选择相关的操作。在本文中,我们将讨论如何使 ExtJS 4 Grid 内容可选,并提供一些示例代码来帮助您快速实现此功能。

步骤 1:启用 Grid 的 selModel 属性

要使 Grid 内容可选,我们需要启用 Grid 的 selModel 属性。该属性定义了选择模型(Selection Model),它是控制选择行为的核心。在 ExtJS 4 中,Grid 默认使用 rowmodel,这意味着只能选择一整行。要启用 selModel 属性,请使用以下代码:

---------------------------- -
  -- --- ----- -------------- ---
  --------- -----------------------------------------
---

这里我们使用 CheckboxModel,这意味着您可以选择一行或多行。您还可以使用其他选择模型,例如 CellModel 或 RowModel。

步骤 2:配置 Grid 的 column 块

虽然我们已经启用了 selModel,但我们仍然需要配置 Grid 的 column 块,以确保单元格中的文本可选择。为此,我们将使用 column 的 renderer 函数。该函数允许我们自定义单元格的显示方式。

以下是一个示例 renderer 函数:

--------------- --------- -
    --------------- - ------------- - ----- - ----
    ------ ------
-

在这个 renderer 函数中,我们使用 tdAttr 属性来定义单元格的 HTML 属性。在本例中,我们添加了一个 data-qtip 属性,用于显示鼠标悬停时的提示文本。如果您不需要提示文本,请将此行代码从 renderer 函数中删除。

步骤 3:使 Grid 内容可编辑

现在,我们已经可以选择 Grid 内容,但是默认情况下,内容仍然是只读的。要启用编辑功能,请将 Grid 中的 editable 属性设置为 true,如下所示:

---------------------------- -
  -- --- ----- -------------- ---
  --------- ------------------------------------------
  --------- ----
---

示例代码

下面是完整的示例代码,它显示了如何实现可选、可编辑的 ExtJS 4 Grid:

---------------------------- -
  --------- --------------
  ------ ----
  ------- ----
  ------ -------- ------
  ------ --------------------------------- -
      ------- -
          ------ --------
          ------ -------- ----- ----------
          ------ -------- ----- ---------
      --
      ----- -
          -------- -------------------- ----------------
          -------- -------------------- ----------------
          --------- --------------------- ----------------
          --------- --------------------- ---------------
      -
  ---
  -------- -
      -
          ----   - -------
          ----   - --
          -------- - ------
          ---------- -------
          --------- --------------- --------- -
              --------------- - ------------- - ----- - ----
              ------ ------
          -
      --
      -
          ----   - --------
          -----  - ----
          -------- - -----
          ---------- --------
          --------- --------------- --------- -
              --------------- - ------------- - ----- - ----
              ------ ------
          -
      --
      -
          ----   - --------
          -----  - ----
          -------- - -----
          ---------- --------
          --------- --------------- --------- -
              --------------- - ------------- - ----- - ----
              ------ ------
          -
      -
  --
  --------- ------------

- ----------------------------------------------------------- --------
---------------------------------------------------------------------------------------