обновить webgrid в выпадающем списке пост назад asp.net mvc - PullRequest
0 голосов
/ 28 марта 2012

Вот как выглядит действие моего контроллера

[HttpPost]
[OutputCache(Location = OutputCacheLocation.None)]
public ActionResult GetData(string Key, string Physician)
{
    string physicianCode = Physician.Split(' ').ElementAt(0).Trim();
    CaseProfile caseProfile = HttpContext.Cache.Get(Key) as CaseProfile;
    return PartialView("_CaseProfile", caseProfile);
}

Это то, что у меня есть в моем частичном представлении _CaseProfile, которое отображается в диалоге jQuery

<div id="paged-case-profile-div">    
@using (Ajax.BeginForm("GetData", "Group", 
    new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "paged-case-profile-div"
         , OnSuccess="OnSuccess", OnComplete="OnComplete", InsertionMode=InsertionMode.Replace }))
        {
        @Html.HiddenFor(m => m.Key)
        @Html.DropDownList("Physician", Model.PhysicianSelectList,
                new { style = "font-size: 11px;", onchange = "this.form.submit();" })
<div>

@{

var grid = new WebGrid(source: Model.Items.AsEnumerable(),
 canPage: true, canSort: false, rowsPerPage: 10);
                }

                @grid.GetHtml(
                htmlAttributes: new { align = "center" },
                tableStyle: "table",
                headerStyle: "header-row",
                alternatingRowStyle: "alternate-row",
                columns:
                    physicianGrid.Columns(
                        physicianGrid.Column("PatientId", "Patient Id"),
                        physicianGrid.Column("MedRecNum", "Med Rec Num"),
                        physicianGrid.Column("AdmissionDate", "Admission Date")))
            </div>
        }
    </div>

все мои файлы jsдобавлено в файл _Layout.cshtml.Я хочу сделать ajax post обратно в выпадающем списке и обновить paged-case-profile-div последним содержимым, возвращаемым из действия контроллера.Проблема в том, что новое содержимое, возвращаемое с сервера, отображается на новой странице, чего я не хочу.Я просто хочу, чтобы мой div вне формы ajax обновлялся новым содержимым.Обратите внимание, что я просто показываю окна предупреждений в методах OnSuccess и OnComplete javascript.Не могли бы вы сообщить мне, что не так в моем коде?

Кроме того, обратите внимание, что я проверил почти все связанные с этим проблемы в stackoverflow, но ни одна из них, похоже, не помогла мне.Я был бы признателен, если бы кто-нибудь мог указать на ошибки в моем коде и дать мне советы по его исправлению, вместо того, чтобы просто указать на какой-то другой вопрос / публикацию.

1 Ответ

0 голосов
/ 28 марта 2012

Убедитесь, что вы указали скрипт jquery.unobtrusive-ajax.js на своей странице, иначе помощник Ajax.BeginForm не будет отличаться от стандартного помощника Html.BeginForm:

<script type="text/javascript" src="@rl.Content("~/scripts/jquery.unobtrusive-ajax.js")"></script>

В раскрывающемся списке попробуйте заменить:

onchange="this.form.submit();"

на:

onchange="$(this).closest('form').submit()"

или введите идентификатор Ajax, а затем:

onchange="$('#myajaxform').submit()"

Когда вы делаете this.form.submit();, вы вызываете событие submit базового элемента DOM, который не выполняет никаких обработчиков onsubmit, которые были подписаны на эту форму.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...