私は現在、選択肢をデータベースに保存する保存ボタンをクリックする前にチェックボックスリストのチェックボックスをオフにする必要があるフォームを持っています。値のリストはデータベースから検索され、チェックボックスリストにバインドされます。基本的にチェックボックスの動的リストです。ASP.netを使用したチェックでチェックボックスの値を保存するにはどうすればよいですか?
これを変更して、ユーザーがチェックボックスをオフにするとすぐに自動的にデータベースに保存されるようにしたいと考えています。
これは、単に、アップデートパネル、データリスト、およびチェックボックスを使用して行うことができると考えました。
例:
<asp:UpdatePanel ID="upnlServices" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:DataList ID="dlistAnimals" runat="server">
<ItemTemplate>
<asp:CheckBox ID="chkAnimal" AutoPostBack="true" OnCheckedChanged="animal_click" runat="server" />
<asp:Label ID="lblAnimal" AssociatedControlID="chkAnimal" runat="server"<%#Eval("Name")%></asp:Label>
</ItemTemplate>
</asp:DataList>
</ContentTemplate>
</asp:UpdatePanel>
「animal_click」は、ストアドプロシージャを使用してデータベースから値を追加または削除するコードビハインド関数です。以前に選択された選択肢は削除されますが、その選択肢がデータベースに存在しない場合は単純に追加されます。
これはローカルマシン上ではすべて動作しますが、リモートサーバーに置くとフォームが遅くなります。ユーザーは複数のチェックボックスをすばやくチェックオフしますが、すべての選択肢がデータベースに保存されているわけではありません。これは、サーバーがユーザーの行動に十分に迅速に追いつくことができないという印象を与えます。
これがなぜこのようなケースか正確にはわかりません。これを行うより効率的な方法があれば、私は提案に興味があるでしょう。
あなたはリピーターのような他のコントロールを試みたことがありますか?または、この方法を試してみてください:http://blogs.msdn.com/b/tom/archive/2008/09/15/slow-performance-of-a-gridview-inside-an-updatepanel.aspx –
私はリピーターを見ましたデータグリッドの使用を決める前にDataGridの背後にある理由は、実装が簡単だったからです。 – nullexception
サンプルでは、DataGridではなくDataListを使用しています。 DataListはViewStateを使用してポストバック間の値を保持しないため、別のコントロールを試すように依頼しました。これは、AsyncPostbacks内で使用されると副作用を引き起こす可能性があります。 –