带有日期选择器的MVC Grid - 最好的方法是什么?

时间:2010-09-27 08:51:06

标签: asp.net-mvc

我之前已经问过如何将一个日期选择器放入网格中,但我没有得到回复。我发现我这样做的方式不起作用,因为同一列中所有字段的ID都是一样的。因此,当我输入日期时,只有列中的第一个字段得到更新。 我发送了一条消息,询问如何设置字段的ID来防止这种情况,但似乎没有人知道。 所以我现在正在研究JQ Grid和MVC Contrib网格。我是两个人的新手,我担心我需要一些时间来弄明白。我应该使用哪一个?

*编辑* 这是关于我在哪里的一些额外信息 在我看来,我有一个foreach外观,因此我渲染了局部视图;

<tr>
    <td><%: Model.T.BankHolidayDescription%></td>
    <td><%: Html.EditorFor(model => model.BH.NullableBankHolidayDate)%></td>
    <td><%: Html.EditorFor(model => model.BH.BankHolidayComment)%></td>
</tr>

我还有一个编辑器模板,可以将日期选择器分配给日期字段;

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.DateTime?>" %>
<%:Html.TextBox("", (Model.HasValue ? Model.Value.ToShortDateString() : string.Empty), new { @class = "datePicker" }) %>

我遇到的问题是网格中每个NullableBankHolidayDate字段的ID都是相同的。因此,当我选择日期时,无论我选择哪一个,列中的第一个字段都会更新。

1 个答案:

答案 0 :(得分:1)

您可以使用JQuery和标准网格执行最初需要的操作。在你想要更新的文本框上设置一个class属性,然后设置jquery在这些类上添加一个datepicker - 而不是在元素id上。

例如 - 假设您使用的是JQuery UI datepicker。

<% foreach (var myObject in Model) { %>
    <tr>
        <td><%= Html.TextBox("MyProperty", myObject.MyProperty, new { @class = "date" }) %></td>
    </tr>
<% } %>

<script type="text/javascript">
    $(function()
    {
        $('.date').each(function()
        {
            $(this).removeClass('hasDatepicker').datepicker();
        });
    });
</script>
相关问题