代码之家  ›  专栏  ›  技术社区  ›  Mike Wills

为什么我的行没有添加到表中?

  •  0
  • Mike Wills  · 技术社区  · 14 年前

    我在用 this article 创建一种方法,使用户可以在一个条目窗体上输入多行。作者所做的和我所做的不同之处在于我把我的领域放在一张桌子上。我的问题是我没有在表中插入新行。我猜剧本找不到 #editorRows 但由于我还只是在学习jQuery,所以我不是百分之百确定。

    我的HTML只显示相关部分

    <fieldset>
        <legend>Request Details</legend>
        <table>
            <tbody id="editorRows">
                <tr><th>Date</th><th>Time</th><th>Hours Requested</th><th>Request Type</th><th></th></tr>
                <tr class="editorRow">
                    <td>...</td>
                    <td>...</td>
                    <td><a href="#" class="deleteRow"><img src="../../images/site_icons/16/69.png" title="Delete" alt="Delete" border="0" /></a></td>
                </tr>
    
            </tbody>
        </table>
    
        <p><a href="/LeaveRequest/BlankRequestedDayRow" id="addItem">Add Day</a></p>
    </fieldset>
    

    我的jQuery代码:

    <script type="text/javascript">
        $(document).ready(function() {
            $("#addItem").click(function() {
                $.ajax({
                    url: this.href,
                    cache: false,
                    success: function(html) { $("#editorRows").append(html); }
                });
                return false;
            });
            $("a.deleteRow").live("click", function() {
                $(this).parents("tr.editorRow:first").remove();
                return false;
            });
        });
    </script>
    

    正在调用/LeaveRequest/BlankRequestedDayRow中的代码,所以我猜代码不知道将其放在哪里。BlankRequestedDayRow添加:

                <tr class="editorRow">
                    <td>...</td>
                    <td>...</td>
                    <td><a href="#" class="deleteRow"><img src="../../images/site_icons/16/69.png" title="Delete" alt="Delete" border="0" /></a></td>
                </tr>
    

    请求的BlankRequestedDay的完整代码:

    <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<EmployeePayroll.ViewModels.LeaveRequestRow>" %>
    <%@ Import Namespace="EmployeePayroll.Helpers"%>
    
    <tr class="editorRow">
        <% using (Html.BeginCollectionItem("requestedDays"))
           { %>
            <td><%= Html.HiddenFor(model => model.DaysRequested.RequestId) %><%= Html.EditorFor(model => model.DaysRequested.DateOfLeave.Date)%></td>
            <td><%= Html.EditorFor(model => model.DaysRequested.DateOfLeave.TimeOfDay)%></td>
            <td><%= Html.TextBoxFor(model => model.DaysRequested.HoursRequested, new { size = 6 })%></td>
            <td><%= Html.DropDownListFor(model => model.DaysRequested.RequestType, 
                new SelectList(Model.LeaveRequestType, "Value", "Text", Model.DaysRequested.RequestType), "(Select)")%></td>
            <td><a href="#" class="deleteRow"><img src="../../images/site_icons/16/69.png" title="Delete" alt="Delete" border="0" /></a></td>
        <% } %>
    </tr>
    
    3 回复  |  直到 14 年前
        1
  •  0
  •   codea    14 年前

    你检查过你的ajax调用是否返回了什么吗?

    使用firefox,您可以使用 firebug 的控制台来检查呼叫。

        2
  •  0
  •   jim tollan    14 年前

    迈克,你和 $("a.deleteRow").live("click", function()) ,您可能必须对 $("#addItem").click(function() {}) 部分,也就是说。

     $("#addItem").live('click', function() {
    

    也许值得一试。。。可能不是这样,因为我还没有测试过,但肯定是有可能的。

    另外,请查看使用:

    $('#editorRows tr:last').after(html);
    

    作为替代。另外,最后一个办法,把身份证放在桌子上,试着把上面所有的东西都放在桌子上,而不是放在尸体上。

    [编辑] -如果没有行,就没有 tbody 除非你自己指定了一个。只有在现有行的存在下,TSBOPE才会自动连接到DOM。

        3
  •  0
  •   Mike Wills    14 年前

    我遇到的问题是在控制器中调用操作后返回了一个错误。我返回了错误的对象类型。修理之后,它起了作用。谢谢大家让我走上正轨!