0

私は解決策を見つけることができる問題に苦しんでいます。

まず第一に、サーバー管理者は他に何もインストールしないため、asp.net AJAXまたは標準のasp.net 2.0以外のものを使用できません。

これが私がやろうとしていることです。(好奇心旺盛な方は、以下の太字の質問に進んでください)

私のページはいくつかの部分で構成されており、それぞれが jquery.load(url) によってロードされます。これらのページ パーツの 1 つは、フォーム ビューを含む aspx で埋められます。ポストバックをしたくないので、編集モードに切り替える aspx ページを示すパラメーターを送信する通常の html ボタンをクリックするだけで、フォーム ビューの EditTemplate に切り替えます。

Page_Load(...)
{
   if(Request.Params["SwitchEditMode"]) SwitchEditMode();
}

これは完璧に機能します!ここで私が立ち往生している部分です。EditTemplate の要素は、データベース ビューからの選択に基づいており、によってフィールドにバインドされています<%# Bind("xx")。次に、DataSource 更新メソッドを呼び出すように指示する aspx ページにパラメーターを送信する html ボタン (asp コントロールなし) があります。dataSource_updating メソッドで、保存したい値を含むコントロールを探します。しかし、これらの値は、編集ビューに切り替えたときと同じです。テキストボックスまたはドロップダウンで行った変更は保持されません。

簡単に言うと、jquery を使用して EditTemplate からデータベースに値を保存する方法について質問です。

これまで、いくつかのアプローチを試みましたが、うまくいきませんでした。

  1. updates() メソッドで、FindControl と set によってコントロールを探しますe.Command.Parameter["xyz"] = foundcontrol.SelectedValue;。値は常に最初と同じです。

  2. <asp:parameter name="SampleValue" />EditTemplate で設定し、<asp:TextBox Value='<%# Bind("SampleValue")#>値は常に null です。

  3. javascript を使用して、選択した値で非表示の入力フィールドを設定します。EditTemplate 内のコントロールは編集モードに切り替えた後にのみ表示されるため、これは機能しません。

ですから、私の考えが完全に間違っていて、完全に間違った方向に進んでいる可能性があります。これははるかに簡単に達成できますが、今のところ、これを達成する方法がわかりません。私は ajax なしでそれを行うことができましたが、ユーザー エクスペリエンスのために、jquery を使用したバージョンを好みます。

ここまで読んで混乱していないすべての皆さん:-)、ご尽力いただきありがとうございます!

よろしくお願いします、

アンドレアス

4

2 に答える 2

1

フォーム ビューを使用することを忘れて、通常の入力コントロールを備えた通常の html フォームを使用するだけです。すべての値を持つ Web サービスからオブジェクトを返し、コントロールに ajax を入力してから ajax でサブミットします。asmx バックエンドを使用して、完全に asp.net または完全に html/jquery を実行します。そうでなければ、混乱しすぎます。

于 2009-09-01T23:57:16.630 に答える
0

AJAX を使用して FormView の両方の「モード」を同じページにロードすると、おそらくフィールド名が重複します。それらの 1 つには、保存されている変更されていない値が含まれています。ASP.NET はどのように違いを認識しますか? 別のフォーム (またはその他のハック) が必要になる EditTemplate からのもののみを送信する必要があります。

または、HTML 送信ボタンが ASP.NET にコントロールの再設定に必要なものを提供していない可能性があります。FormView を含むページで ViewState を使用していますか?

全体として、これは毛むくじゃらの技術の組み合わせのように聞こえます... ご存じのとおり。

于 2009-09-01T20:53:16.983 に答える