【问题标题】:DatePicker is always set to the first row ASP.NET MVCDatePicker 始终设置为第一行 ASP.NET MVC
【发布时间】:2019-05-14 05:35:08
【问题描述】:

我的日期选择器始终设置为第一行。它会动态实现还是我的系统有问题?

  <tbody class="TrimGridContent" id="trimBody">
                        @foreach (TrimsAccessoriesOrderModel trimsData in TrimsData)
                        {
                            <tr class="TrimGridFields">
                                <td >
                                    <input type="checkbox" class="singleTrimGridCheck" value="@trimsData.GridTranId">
                                </td>
                                <td>@trimsData.SerialNumber</td>
                                <td>@trimsData.GridOrderDate</td>
                                <td>@trimsData.GridSyleNo</td>
                                <td>@trimsData.GridItemName</td>
                                <td>@trimsData.GridItemCode</td>
                                <td>@trimsData.GridStoreName</td>
                                <td>@trimsData.GridSupplierName</td>
                                <td>@trimsData.GridOrderQty</td>
                                <td>@trimsData.GridUnitName</td>
                                <td>@trimsData.GridUnitPrice</td>
                                <td>@trimsData.GridDeliveryDate</td>
                                <td>@trimsData.GridRemarks</td>
                                <td>
                                    @Html.TextBoxFor(m => m.SupplierDate, new {@class = "form-control datepicker", @placeholder = "Supplier Date", @id = "SupplierDate"})
                                </td>
                                <td>
                                    @Html.TextBoxFor(m => m.RevisedDate, new {@class = "form-control datepicker", @placeholder = "Revised Date", @id = "RevisedDate"})
                                </td>

                                <td>
                                    @Html.TextBoxFor(m => m.InHouseDate, new {@class = "form-control datepicker", @placeholder = "In House Date", @id = "InHouseDate"})
                                </td>
                            </tr>
                        }
                    </tbody>

如果我向除第一行日期选择器之外的第二行或第三行提供输入,则日期将设置为名为供应商日期的第一行。

这是我的 js。

@section Scripts {
 @Scripts.Render("~/bundles/jqueryval")
   <script>
       $('.datepicker').datepicker({
           changeMonth: true,
           changeYear: true,
           dateFormat: 'dd/mm/yy'
       });
     </script>
       }

有人遇到过这种问题吗?

【问题讨论】:

    标签: javascript jquery asp.net asp.net-mvc jquery-ui


    【解决方案1】:

    听起来您的问题发生了,因为您将 @Html.TextBoxFor() 助手放入带有预定义 @id = "SupplierDate" 参数的 foreach 循环中,这会呈现所有具有相同 id 属性的相应文本框,而不是唯一的 ID 名称。因此,您应该尝试使用for 循环和TrimsData 集合索引,同时删除id 属性定义(让助手创建唯一的id 属性值):

    @for (int i = 0; i < TrimsData.Count; i++)
    {
        <tr class="TrimGridFields">
            <td>
               <input type="checkbox" class="singleTrimGridCheck" value="@TrimsData[i].GridTranId">
            </td>
            <td>@TrimsData[i].SerialNumber</td>
            <td>@TrimsData[i].GridOrderDate</td>
            <td>@TrimsData[i].GridSyleNo</td>
            <td>@TrimsData[i].GridItemName</td>
            <td>@TrimsData[i].GridItemCode</td>
            <td>@TrimsData[i].GridStoreName</td>
            <td>@TrimsData[i].GridSupplierName</td>
            <td>@TrimsData[i].GridOrderQty</td>
            <td>@TrimsData[i].GridUnitName</td>
            <td>@TrimsData[i].GridUnitPrice</td>
            <td>@TrimsData[i].GridDeliveryDate</td>
            <td>@TrimsData[i].GridRemarks</td>
            <td>
                @Html.TextBoxFor(m => m.TrimsData[i].SupplierDate, new {@class = "form-control datepicker", @placeholder = "Supplier Date" })
            </td>
            <td>
                @Html.TextBoxFor(m => m.TrimsData[i].RevisedDate, new {@class = "form-control datepicker", @placeholder = "Revised Date" })
            </td>
    
            <td>
                @Html.TextBoxFor(m => m.TrimsData[i].InHouseDate, new {@class = "form-control datepicker", @placeholder = "In House Date" })
            </td>
        </tr>
    }
    

    或者,如果您有另一个具有唯一值的 TrimsData 属性,请使用该属性设置文本框 ID 值,如下例所示:

    @Html.TextBoxFor(m => m.SupplierDate, new {@class = "form-control datepicker", @placeholder = "Supplier Date", @id = trimsData.Id })
    

    相关问题:

    JQuery Datepicker for multiple .NET MVC Input Fields not working

    【讨论】:

    • 这个问题的好答案:)
    • @Tetsuya 它仅适用于 SupplierDate 列,但是当我再次输入修订日期时,日期更改为相应的 SupplierDate 列!这是代码&lt;td&gt;@Html.TextBoxFor(m =&gt; m.SupplierDate, new {@class = "form-control datepicker", @placeholder = "Supplier Date", @id = trimsData.GridTranId }) &lt;/td&gt; &lt;td&gt; @Html.TextBoxFor(m =&gt; m.RevisedDate, new {@class = "form-control datepicker", @placeholder = "Revised Date", @id = trimsData.GridTranId }) &lt;/td&gt;
    【解决方案2】:

    我认为的一个原因是日期选择器在呈现动态文本框之后运行。您必须再次触发 datepicker 初始化才能使其工作。

    【讨论】:

      猜你喜欢
      • 2017-10-29
      • 2020-06-26
      • 2018-03-20
      • 1970-01-01
      • 2012-08-22
      • 1970-01-01
      • 2012-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多