我之前已经问过如何将一个日期选择器放入网格中,但我没有得到回复。我发现我这样做的方式不起作用,因为同一列中所有字段的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都是相同的。因此,当我选择日期时,无论我选择哪一个,列中的第一个字段都会更新。
答案 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>