【问题标题】:Retrieving values from a table cell <td> to a controller将值从表格单元格 <td> 检索到控制器
【发布时间】:2013-01-13 19:15:13
【问题描述】:

我正在尝试从表格单元格中获取特定值并将其传递给控制器​​。但这似乎不起作用。我给你看我的一些代码:

这是在控制器中:

def searchUser = {
        String abc = request.getParameter("harrow")
        println(abc)
    }

这是在html页面中:

  <form>
 <div style="height: 250px; overflow: scroll; width: 100%;">
              <table id="normal">
              <g:each in = "${result}">
              <tr id="btn">
              <td width=10% >${it.ID}</td>
              <td width=25% id="harrow">${it.username}</td>

              </tr>
              </g:each>


              </table>
         </div>
            <input type ="submit" name ="abc" id="opener">

    </form>

编辑

AJAX:

 $("#edittable").on('click', function() {
            $.ajax({
                url: URL,
                data: $(this).serialize(),
                type: "POST",
                success: function(html){
                    //do something with the `html` returned from the server here
                    $("#edit1").html(html).dialog("open")
                },
                error: function(jqXHR, textStatus, errorThrown){
                    alert('error: ' + textStatus + ': ' + errorThrown);
                }
            });
            return false;//suppress natural form selection
        });

我可以获取要传递给控制器​​的值,但现在它只检索第一行值而不是另一行。我的 AJAX 代码有问题吗?非常感谢你们。

【问题讨论】:

  • 表单发送input 元素,因此您的&lt;td&gt; 永远不会被发送到控制器。事实上,除了&lt;input type ="submit" name ="abc" id="opener"&gt; 之外,此表单上的任何内容都不会发送到控制器。您的表格实际上并没有任何意义。你想让用户做什么?
  • 哦,好吧,有输入字段,但它只是我删除它。我在这里要做的是在表格单元格上有一个提交按钮并将值传递给控制器​​。就是这样。
  • 您必须使用与 td 中的值相同的隐藏字段。或者 td 值应该在输入文本中(如果它是可修改的)。仍然它似乎不是最好的方法。如果您有很多行的表格,您想使用按钮发送哪一行?整张桌子?也许使用 ajax 并只发送所需的数据会更好?
  • 您好,我使用了 ajax,但无论我发送什么数据,它只检索第一行数据。我可以更新我的代码。
  • 那么您想将所有行发送到您的控制器吗?你用这些行做什么?在视图中是否更新了行?请描述你想做什么,而不是你想怎么做

标签: html grails controller html-table css-tables


【解决方案1】:

所以要显示行的详细信息,其中一种方法可以是:

控制器方法

def rows = [
        [id:1, name:'name1'],
        [id:2, name:'name2'],
        [id:3, name:'name3']
    ]

def show(){
    [results:rows]
}

def showLine(Long id){
    render rows.find {it.id == id }
}

查看

<html>
<head>
    <g:javascript library="jquery" />
    <r:layoutResources />
</head>
<body>

<table>
    <thead>
        <tr>
            <th>Action</th>
            <th>Id</th>
            <th>Name</th>
        </tr>
    </thead>
    <tbody>
        <g:each in="${results}" status="i" var="r">
            <tr>
                <td><g:remoteLink value="Details" id="${r.id}" action="showLine" update="lineDetails">Details</g:remoteLink></td>
                <td>${r.id}</td>
                <td>${r.name}</td>
            </tr>
        </g:each>
    </tbody>
</table>

<div id="lineDetails">
</div>
</body>
</html>

基本上,您使用 AJAX 调用 showLine 方法并传递行对象 ID。然后搜索对象并将其渲染回来。渲染后的数据放入表格下的 div 中。是否在表格中使用 onclick、按钮或链接取决于您。如何在结果页面上显示详细信息也取决于您 - 使用 jquery 对话框或其他方式。希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多