4

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);
    }

ビジネス オブジェクトが作成され、そのプロパティがコントロールから読み取られた値で設定されます。次に、オブジェクトがデータベースに挿入されますが、これは問題なく機能します。問題は、テキスト ボックスとドロップダウンの値が正しく設定されていないことです。テキストボックスの値は空で、テキストボックスに書き込み、ボタンを押す前に別の ddlitem を選択しても、選択した ddl の値は常に 1 です。ddl は次のようにロードされます。

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

            }

このコードを if (!Page.IsPostBack) の外に置いてみましたが、objectdatasource を使用して入力しても同じ問題が発生しました。ボタンを押すと、コントロールが「リセット」されるようです。コントロールを含む div を表示するだけなので、FaceBox とは何の関係もないと思います。 ... 何か案は?

これは、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

3 に答える 3

1

テキスト ボックスに入力し、if(!IsPostBack) ブロック内のドロップ ダウン項目を選択するコードが必要です。これは、ボタン イベントの前にページ ロード イベントが再び発生するためです (詳細については、ASP.NET ページ ライフ サイクルを参照してください)。これについて)。コントロールでビューステートを有効にしてみましたか? それは問題の一部かもしれません。

于 2010-01-19T14:16:21.623 に答える
1

Change

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

to

$('form').append($.facebox.settings.faceboxHtml)
于 2011-09-20T06:48:41.963 に答える
0

問題は、FaceBoxがデフォルトで本体に追加されるだけでなく、これらのコントロールの多くです。jQueryUIダイアログもこれを行います。

修正については、この質問を参照してください:JQuery Faceboxプラグイン:フォームタグ内に取得します

タグの外側で問題が発生する<form>と、ASP.Netの動作から切り離されます。[送信]をクリックすると、これらの入力の値がフォーム内になかったため、サーバーに送信されませんでした...そのため、値が表示されません。

これは、その質問からの簡単な答えです。KevinSheffieldの功績です

facebox.jsを突っついている私は関数init(settings)でこの行に出くわしました...

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

私はそれを...に変更しました

$('#aspnetForm').append($.facebox.settings.faceboxHtml)
于 2010-01-19T22:29:49.790 に答える