gpt4 book ai didi

jquery - 带有 SQL JOIN 的 jqGrid JSON

转载 作者:行者123 更新时间:2023-11-29 12:27:26 24 4
gpt4 key购买 nike

我很难想出一个好的解决方案来处理从 SQL (Postgres 8.4) 检索数据并将其显示在 jqGrid 中。关注的表是:

  1. meta(“主”表)...

    +--------------------------------+
    | id | metaname | metavalue |
    +--------------------------------+
    | 1 | host | www.google.com |
    | 2 | ip | 8.8.8.8 |
    +--------------------------------+
  2. metauser(加入到 metausedby)...

    +---------------+
    | id | metauser |
    +---------------+
    | 1 | Tool 1 |
    | 2 | Tool 2 |
    | 3 | Tool 3 |
    +---------------+
  3. metausedby(仅包含元 ID 和元用户 ID 的关系表)...

    +--------------------------+
    | id | metaid | metauserid |
    +--------------------------+
    | 1 | 1 | 2 |
    | 2 | 2 | 1 |
    | 3 | 2 | 3 |
    +--------------------------+

meta:metausedby的关系,正如你在metausedby中看到的,是one:many。所以我的查询返回...

    +------------------------------------------------------------+
| id | metaname | metavalue | metauserid | metausername |
+------------------------------------------------------------+
| 1 | host | www.google.com | 2 | Tool 2 |
| 2 | ip | 8.8.8.8 | 1 | Tool 1 |
| 2 | ip | 8.8.8.8 | 3 | Tool 3 |
+------------------------------------------------------------+

那么我可以/应该做什么来构建一个 jqGrid select(多)字段来显示 metauserid/metausername 的多种可能性?在我之前构建的网格中,数据几乎完全在 PHP 中处理 - 一个函数调用来查询然后操作 JSON 以构建 jqGrid select 字符串(在必要时将多个记录转换为一个)但我没有我不喜欢这种方法,我也不认为它非常适用于这个特定的网格。

也许我的查询不太理想,它可以在那里处理,或者这可以很容易地在 Javascript/jQuery 中处理(我都不擅长,这就是为什么我以前非常依赖 PHP 数据操作)。

我们的目标是让网格沿着...

    +---------------------------------------+
| Meta Name | Meta Value | Used By |
+---------------------------------------+
| host | www.google.com | Tool 2 |
+---------------------------------------+
| ip | 8.8.8.8 | Tool 1 |
| | | Tool 2 |
| | | Tool 3 |
+---------------------------------------+

请注意,在上面的示例网格中,工具 2 不会实际显示;在表单编辑中,将显示所有工具,包括工具 2,并且将选择工具 1 和 3(如果数据设置正确,jqGrid 应该会自动实现这一点)

当表单编辑时,Used By 字段需要是一个select(多)字段,显示来自 metauser 的所有“工具”理想情况下,在编辑现有记录时会选择适当的工具。

我当前的查询...

WITH paged AS 
(
SELECT
meta.id as metaid,
metaname,
metavalue,
metauser.id as usedby,
ROW_NUMBER() OVER (ORDER BY ' . $orderBy . ') AS rowNumber
FROM meta
LEFT JOIN metausedby ON metausedby.metaid = meta.id
LEFT JOIN metauser ON metauser.id = metausedby.metauserid
)

SELECT
metaid,
metaname,
metavalue,
usedby
FROM paged
WHERE rowNumber BETWEEN ' . $start . ' AND ' . $end . ';';

我的usedby字段在jqGrid的colModel中定义如下:

    {
name: 'usedby',
index: 'usedby',
editable: true,
editoptions:
{
multiple: true,
size: "<?php echo $metaUserCount; ?>",
value: "<?php echo $metaUserString; ?>"
},
edittype: 'select'
}

当然这会在编辑表单中显示 select 字段(并为给定的记录选择适当的工具)但是由于 JSON(如我上面查询的示例输出中突出显示的那样),我有meta ID 2 的两个单独记录...一个用于工具 1,另一个用于工具 2。

一个可能影响解决方案的考虑因素是我在这个网格中使用的服务器端分页。

对于比我更精通 SQL 和 jQuery/jqGrid 的人来说,这一切可能都非常简单,所以感谢您的耐心等待和帮助。最后一个评论,我的网格工作除了排序如何处理这个问题。

谢谢。

最佳答案

我的解决方案是,一旦我有了本地数据,就循环遍历它以根据需要更改数据并动态地操纵 loadonce 和数据类型,以适应所有必要的功能。

关于jquery - 带有 SQL JOIN 的 jqGrid JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24399953/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com