【问题标题】:Maintain the value of checkbox in grid.mvc维护grid.mvc中checkbox的值
【发布时间】:2016-08-26 21:46:17
【问题描述】:

我正在 mvc 4 中开发一个应用程序,其中我有一个 grid.mvc 来向用户显示一些数据,其中我有一个带有复选框的字段。问题是当他们使用分页时,复选框的值是干净的并且不保持值 true 。有什么建议可以解决这个问题吗? 谢谢。

【问题讨论】:

  • 您是否在页面加载时重置复选框的值?如果是这样,您将不得不添加一些代码,以便仅在他们最初访问页面而不是分页时执行此操作。如果你展示你的一些代码,我可能会有更好的想法/能够详细说明。
  • 感谢您的支持

标签: asp.net-mvc-4 grid


【解决方案1】:

我不是肯定的,所以你必须尝试一下,因为我现在无法测试它,但我很确定你的问题是你创建复选框的地方:

@Html.CheckBox("ckbPersona_" + Convert.ToString(p.IdPersona), new {})

每次您的用户使用分页时,页面都会重新加载以提取下一组数据。因此,每次发生这种情况时,您的复选框都由上述代码设置。我从您那里复制的那行代码没有将复选框设置为选中,因此默认情况下它将未选中。这就是为什么即使您的用户选中了该框,当他们翻页时它也会变为未选中状态。

您需要做的是设置某种变量来跟踪该框是否被选中。当分页发生时,您需要将此变量传递给您的视图,以便在加载新页面时,您可以选中或不选中该框,具体取决于用户在前一页所做的操作。当你创建你的盒子时,代码将是这样的:

@Html.CheckBox("ckbPersona_" + Convert.ToString(p.IdPersona), new { @checked = yourVariableHere })

请参阅this stackoverflow question thread,了解有关您在这种情况下的选择的有用讨论。

【讨论】:

    【解决方案2】:

    感谢支持,接下来是我的看法

    <div class="container-fluid table-responsive">
                @Html.Grid(Model).Named("grdParticipantes").Columns(columns =>
                {
                    columns.Add().Titled("Seleccionar").Encoded(false).Sanitized(false).SetWidth(45).RenderValueAs(p => @Html.CheckBox("ckbPersona_" + Convert.ToString(p.IdPersona), new {}));
                    columns.Add(p => p.NombrePersona).Titled(IdiomaDirectorio.lblParticipante).Sortable(true).Filterable(true);
                    columns.Add(p => p.Equipo).Titled(IdiomaDirectorio.lblEquipo).Sortable(true).Filterable(true);
                }).WithPaging(3).WithMultipleFilters()
            </div>
    

    【讨论】:

    • 请接受我对您的问题提出的修改;附加代码应放在原始问题中,而不是作为答案。
    猜你喜欢
    • 2014-09-02
    • 2019-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多