Выпадающий список привязки MVC для веб-сетки второй раз не работает - PullRequest
0 голосов
/ 09 января 2019

У нас есть выпадающий список для Webgrid, я пытаюсь связать выпадающий список для Webgrid. У меня нет проблем с привязкой в ​​первый раз, потому что она показывает правильное значение в выпадающем списке. Во второй раз это не связывает правильное значение в выпадающем списке и показывает неправильное выбранное значение.

dropdownlistfor в веб-сетке:

WebGrid grid = new WebGrid(rowsPerPage: ReviewsController.LookupPageSize, ajaxUpdateContainerId: "dvSearchResultsGrid", ajaxUpdateCallback: "OnCompleteAjaxFormReviews");
        grid.Bind(Model.Users, autoSortAndPage: true, rowCount: @Model.TotalCount);

        var gridColumns = new List<WebGridColumn>();
        gridColumns.Add(grid.Column("Name", "Name"));
        gridColumns.Add(grid.Column("SourcingCompany", "Sourcing company"));
        gridColumns.Add(grid.Column("SponsorName", "Sponsor name"));
        gridColumns.Add(grid.Column("CurrentNetworkAccessLevel", "Network Access Level",
format: @<text>@Html.DropDownListFor(model => model.NetworkAccessLevel.SelectedValue, new SelectList(Model.NetworkAccessLevel.Items , "Key", "Value", Model.NetworkAccessLevel.SelectedValue = @item.CurrentNetworkAccessLevel), new { @id = "ddlNetworkAccessValue", @class = "dropdownlist", style = "width:70px" })
<input type="hidden" id="hdnNetworkAccessLevel" value="@item.CurrentNetworkAccessLevel" />
<a class="NetworkAccessLevelReset" href="javascript:void(0)">Reset</a>
</text>, style: "columnnowrap12"));

@grid.GetHtml(tableStyle: "table table-striped table-hover",
mode: WebGridPagerModes.All,
firstText: "<< First",
previousText: "< Prev",
nextText: "Next >",
lastText: "Last >>", numericLinksCount: 9,
htmlAttributes: new { id = "Grid" },
columns: grid.Columns(gridColumns.ToArray()))
}

Секция контроллера: (нажатие кнопки для извлечения данных сетки и привязки к сетке):

[HttpPost]
        public ActionResult DisplayAll(ReviewsListViewModel model)
        {
            // To set the Network Access Level dropdownlist
            NetworkAccessLevelItems(model);
            model.IsAllUsers = true;
            model.IsUsersExpiringWithin35Days = false;

            List<UserBase> users = GetSearchResults(model);

            if (users != null && users.Count() > 0)
            {
                if (users.Count() >= 1000)
                {
                    model.ErrorMsg = ErrorCodeHelper.GetInstance().FindByCode("S102");
                }
                else
                {
                    model.TotalCount = users.Count();
                    model.Users = users;
                }
            }
            else
            {
                model.ErrorMsg = ErrorCodeHelper.GetInstance().FindByCode("S101");
            }

            return PartialView("~/Views/Reviews/_Results.cshtml", model);
        }

Вид: (структура основного вида с частичными видами)

<div id="dvReviews">
    @using (Ajax.BeginForm("", "", new AjaxOptions { HttpMethod = "", UpdateTargetId = "dvGridSearchResults", OnSuccess = "OnCompleteAjaxFormReviews()", LoadingElementId = "progress" }))
    {
        @Html.AntiForgeryToken()

        <fieldset>
            <div id="dvTitle"><h2> @Html.DisplayFor(model => model.Title) </h2></div>
            <div class="container-fluid">
                <div class="row">
                    <div class="col-sm-12 col-md-12 col-lg-12">
                        @Html.Partial("_Instructions", Model)
                        @Html.Partial("_Filter", Model)
                        <div id="dvGridSearchResults">
                            @Html.Partial("_Results", Model)
                        </div>
                    </div>
                </div>
            </div>
        </fieldset>
    }
    <div id="progress" class="loader" style="display:none">
    </div>
</div>
...