Отображение диалогового окна jquery при обратной передаче в ASP.NET после сохранения новой записи - PullRequest
1 голос
/ 20 сентября 2010

Я хотел бы, чтобы пользователь добавил новую запись в базу данных и открыл диалоговое окно JQuery, подтверждающее, что новая запись была сохранена. Я думал, что это будет простое упражнение. У меня есть привязка сетки к LINQDataSource, чтобы пользователь мог просматривать и редактировать существующие записи, а также текстовое поле и кнопку для добавления новых кодов.

В заголовке документа у меня есть следующее:

$('#dialog').dialog({
    autoOpen: false,
    width: 400,
    buttons: {
        "Ok": function () {
            $(this).dialog("close");
        }
    }
});

и дальше в разметке у меня есть:

<div id="dialog" title="New Code Added">
<p>"<asp:Literal runat="server" ID="LiteralNewCode"></asp:Literal>" was successfully added.</p>
</div>

Таким образом, когда пользователь вводит новое описание и проходит все проверки, он добавляется в базу данных, и просмотр сетки восстанавливается для отображения новой записи.

protected void ButtonSave_Click(object sender, EventArgs e)
{
    if (Page.IsValid)
    {
        CCRCode.Add( <long list of paramters> );
        GridCode.DataBind();

        IsNewCode = true;
        NewDescription = <new description saved to database>;
    }
}

Теперь вот где (я думал) я бы установил логическое свойство, чтобы указать, что было добавлено новое описание, а также текст нового описания. Смотрите ниже:

protected bool IsNewCode
{
    get { return ViewState["IsNewCode"] != null ? (bool)ViewState["IsNewCode"] : false; }
    set { ViewState["IsNewCode"] = value; }
}

private string NewDescription
{
    get { return ViewState["NewDescription"] != null ? ViewState["NewDescription"].ToString() : string.Empty; }
    set { ViewState["NewDescription"] = value; }
}

Здесь я заблудился. Я думаю, я хочу добавить функциональность, чтобы включить код, похожий на:

$('#dialog').dialog('open');

Я добавил метод registerscriptblock в событие page_load, но это не сработало. Есть идеи? Или я просто ошибаюсь?

Спасибо.

Ответы [ 4 ]

2 голосов
/ 20 сентября 2010

Два способа: во-первых, написать javascript в коде на стороне сервера. Или определите метод JS для отображения диалога (скажем, с именем showDialog) и вызовите его с помощью:

Page.ClientScript.RegisterStartupScript(... "showDialog();" ..);

RegisterStartupScript ставит вызов метода в конце, убедитесь, что ваш скрипт работает над ним. Вы также можете обернуть его вызовом document.ready, чтобы убедиться, что JQuery правильно загружен.

2 голосов
/ 20 сентября 2010

Не совсем то, что вы хотите сделать.Но я использую много jquery с .NET в моих проектах.вот как я могу, вероятно, дать вам подсказку.

foo.aspx.cs

public String ScriptToRun = "$('#dialog').dialog('open');";

изменить значение ScriptToRun в вашем коде C #

foo.aspx

$(document).ready(function() {<%=ScriptToRun %>});

Помните, что все, что вы сделали в бэкэнде, будет генерировать HTML, Css и javascript для браузера.

0 голосов
/ 20 сентября 2010

Я разместил код в другом вопросе для пользовательского класса «MessageBox», который я написал: ASP.NET Jquery C # MessageBox.Show диалоговое окно ... выдает

код по умолчаниюиспользует функцию javascript alert (), но вы можете определить свой обратный вызов, чтобы он вызывал ваш собственный метод javascript для отображения сообщений.

0 голосов
/ 20 сентября 2010

Я думаю, что единственное, что вам не хватает, - это создание диалога, когда Дом будет готов.

$(document).ready(function() {$('#dialog').dialog('open');});
...