Событие кнопки asp.net внутри jQuery FaceBox - PullRequest
4 голосов
/ 19 января 2010

Я использую jQuery FaceBox для отображения текстового поля, выпадающего списка и кнопки.Пользователь может написать текст в текстовом поле, выбрать значение в ddl и нажать кнопку.Это запускает некоторый код в коде позади.FaceBox показывает хорошо, и содержание в нем также в порядке.Также происходит событие кнопки.Это код для обработчика события кнопки:

protected void Button1_Click(object sender, EventArgs e)
    {
        _favorit = new Favoritter();
        ListItem fav = ddl_favoritter.SelectedItem;
        _favorit.FavoritterFolderID = int.Parse(fav.Value);
        //_favorit.FavoritterFolderID = Convert.ToInt32(ddl_favoritter.SelectedItem);
        _favorit.FavoritterNavn = txt_favoritNavn.Text;
        _favorit.FavoritterUserID = UserID;
        _favorit.FavoritterUrl = HttpContext.Current.Request.Url.ToString();
        FavoritterManager.InsertFavoritter(_favorit);
    }

Бизнес-объект создан, и его свойства установлены со значениями, считанными из элементов управления.Затем объект вставляется в базу данных, которая прекрасно работает.Проблема заключается в том, что значения текстового поля и раскрывающегося списка установлены неправильно.Значение текстового поля пустое, а значение ddl выбрано всегда 1, хотя я пишу в текстовом поле и выбираю другой ddlitem, прежде чем нажать кнопку.Ddl загружается так:

if (!Page.IsPostBack)
            {
                _favoritter = FavoritterFolderManager.GetFavoritterFolderByUser(UserID);
                ddl_favoritter.DataSource = _favoritter;
                ddl_favoritter.DataBind();

            }

Я попытался поместить этот код снаружи if (! Page.IsPostBack), а также заполнить его с помощью источника данных объекта, но проблема остается той же.Это похоже на то, что элементы управления «сбрасываются», когда я нажимаю кнопку, и я не думаю, что это имеет какое-либо отношение к FaceBox, поскольку все, что он делает, это показывает элемент div, содержащий элементы управления ... С другой стороны,... Есть идеи?

Это код на странице aspx:

<div id="showme" style="display:none;">
                        Add to favourites.<br />
                        <br />
                        <p>
                            Title:&nbsp;<span><asp:TextBox ID="txt_favoritNavn" runat="server"></asp:TextBox></span></p>
                        <p>
                            select folder:&nbsp;<span><asp:DropDownList ID="ddl_favoritter" runat="server" DataTextField="FavoritterFolderNavn"
                                DataValueField="FavoritterFolderID" AppendDataBoundItems="true">
                            </asp:DropDownList>
                            </span>
                        </p>
                        <br />
                        <asp:Button ID="Button1" runat="server" Text="Gem" onclick="Button1_Click"/>
                    </div>

Ответы [ 4 ]

1 голос
/ 20 сентября 2011

Изменение

$('body').append($.facebox.settings.faceboxHtml)

до

$('form').append($.facebox.settings.faceboxHtml)
1 голос
/ 19 января 2010

Вам нужен код, который заполняет текстовое поле и выбирает выпадающий элемент внутри блока if (! IsPostBack), потому что событие загрузки страницы снова запускается до события кнопки (см. ASP.NET).Страница жизненного цикла для получения дополнительной информации об этом).Вы пытались включить состояние просмотра на элементе управления?Это может быть частью проблемы.

0 голосов
/ 20 января 2010

Я нашел ответ в этой теме:

Facebox добавление запятых к вводу

Спасибо, ребята, и спасибо Нику Крейверу за помощь

0 голосов
/ 20 января 2010

Проблема в том, что многие из этих элементов управления, а не только FaceBox, по умолчанию добавляются в тело. Диалоговое окно jQuery UI также делает это.

См. Этот вопрос для исправления: Плагин JQuery Facebox: получите его внутри тега формы

Когда что-то происходит вне тега <form>, они отключаются от того, как работает ASP.Net. Когда вы нажали кнопку Отправить, значения из этих входных данных не были в форме, поэтому не были отправлены на сервер ... вот почему вы не видите значений.

Это быстрый ответ на этот вопрос, кредит Кевин Шеффилд :

ковыряться в facebox.js Я наткнулся на эту строку в функции init (settings) ...

$('body').append($.facebox.settings.faceboxHtml)

Я изменил это на ...

$('#aspnetForm').append($.facebox.settings.faceboxHtml)
...