开发者

Keeping selected item from dropdown box after page refresh

I have a dropdown box with a list of times for the user to choose from. My problem is that after the user picks开发者_JS百科 their choice and then hits the submit button, the page is refreshed and then the dropdown box is set to default again - how can i have the users choice stay in the dropdown box even after a page reload? I am not sure what part of my code is needed best my Get and Post are long - but if there is a general example that would help.

CODE FROM CONTROLLER:

Here is one of my lists i load into the dropdown box:

IQueryable<User> users = _userRepository.FindAllForOffice(_currentUser.OfficeId);
            userViewModel.Users = users.ToSelectList("UserId", "FullName",
                                                                   userViewModel.UserId.ToString());

            foreach (SelectListItem view in userViewModel.Users)
            {
                if (!viewData.ContainsKey(view.Text))
                    viewData.Add(view.Text, view.Value + "|user");
            }

This is adding to the actual dropdown:

userViewModel.ViewData = viewData.ToSelectList("Value", "Key",
                                                                         userViewModel.Value);
            return View("UserSummary", userViewModel);

ON MY ASPX.CS page i have the following:

Page_Load

string viewType = null;
if(!String.IsNullOrEmpty(Request.QueryString["viewType"]))
        {
            viewType = Request.QueryString["viewType"];
        }


if(!IsPostBack)
        { if (viewType == "user")
                {
                    viewParams.Add("ViewName", "User Report");
                    var reportDataSource =
                        _userService.GetUsersReportData(beginDate, endDate, id);
                    reportViewer.Initialize("UserIndividual.rdlc",
                                            new List<ReportDataSource> {reportDataSource}, viewParams);
                }

I didn't add all the initialization for all the elements - didn't think it is really needed for this situation

Thanks


Check this odetocode.com article out.

To keep the selected value after a manual refresh, you could use a cookie, for example jquery.cookie. You would have to save the selected value on change and retrieve the value on page load.


I actually found a solution which was really simple and i guess i was overlooking it. I found that the same way i was passing in the values of the dates i could pass the value of the selected view type and it will remain in dropdown box until changed rather than changing after every page load. I made the additions in my CONTROLLER file in my Get method after the button click.

this is my Post:

[HttpPost]
    public ActionResult ResultSummary(ResultSummaryViewModel resultSummaryViewModel)
    {
        if (!ModelState.IsValid)
            return View("ResultSummary", resultSummaryViewModel);
        return RedirectToAction("ResultSummary",
                                new
                                    {
                                        beginDate = resultSummaryViewModel.BeginDate,
                                        endDate = resultSummaryViewModel.EndDate,
                                        value = resultSummaryViewModel.Value
                                    });
    }

And this is my Get:

[HttpGet]
    public ActionResult ResultSummary(DateTime? beginDate = null, DateTime? endDate = null, string value="")
    {
        var resultSummaryViewModel = new ResultSummaryViewModel();
        resultSummaryViewModel.BeginDate = beginDate;
        resultSummaryViewModel.EndDate = endDate;
        resultSummaryViewModel.Value = value;

.........

The code continues but this is the main part.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜