動的に作成されたドロップダウリストVB.NETのためのChangeイベントで
-
12-09-2019 - |
質問
私は、ユーザーがメインページから見出しを追加および削除するために必要なウェブサイトを持っています。 見出しは、見出しが表示された場合を判断する(trueまたはfalse)「表示」と題したコラムで、データベースに格納されています。私は、ユーザーがメインページから見出しを追加または削除する機能を持つようにしたいので、「有効」と「無効」を含むドロップダウンリストと一緒にすべての見出しのテーブルを作成し、別のページを作成しました。私はリストダウンこれらのドロップは、ユーザーがデータベースが更新されるドロップダウンリストで値を変更したときで仕事をしたいです。私だけは、変更イベントのドロップダウンリストを与える方法を見つける傾けます。
任意のアイデア? 私はこれについて正しい道を行くのか、これを行うには良い方法はありますでしょうか?
解決
まず、あなたの実際のリクエストを行うには (最低でも、あなたのドロップダウンがリピータ、またはデータグリッドにあるであろうが)あなたは、
のAutoPostBackするドロップダウンを設定し、その値を取得し、データを更新するためのハンドラを追加し、IEう Private Sub SetupDropdowns()
Dim pDropDown As New DropDownList
pDropDown.Items.Add("Yes")
pDropDown.Items.Add("No")
pDropDown.AutoPostBack = True
AddHandler pDropDown.SelectedIndexChanged, AddressOf pDropDown_SelectedIndexChanged
End Sub
Private Sub pDropDown_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)
Dim value As String = CType(sender, DropDownList).SelectedValue
'Do something with value
End Sub
あなたが直接SQLにアクセスしている場合は、簡単な方法は、データグリッドを使用して、SQLクエリにそれをデータバインドすることです。
他のヒント
まず、個人的に私は、真/偽の値のためのユーザインタフェースを提供するためのチェックボックスを使用します。次の2つの方法でこれを処理することができますどちらかあなたはASP.NETコントロールを使用します(
ASP.NETコントロールを使用する場合は、あなたは単にあなたのために作成することがCheckedChangedイベントのイベントハンドラを持っているために、(デザインビューで)コントロールをダブルクリックすることができます。 HTMLのinput要素を使用する場合には、JavaScriptを使用して、クライアント側のonclickイベントを処理する必要があり、サーバーがデータベースを更新できるようにJavaScriptがAJAX呼び出しまたは類似を行う必要があります。私は、ASP.NETのアプローチが単純であることだと思います。
たぶんあなたの本のための最も簡単な方法は、単純にデータグリッドを使用することで、あなたは、簡単にイベントを処理することができます。
別の方法として、あなたは、単に「ショー」や「隠す」オプションを行っていることから、あなただけのより良いUIを提供可能性がある、ボタンを使用することができます。
(私が原因一部のブラウザでは、スクロールホイールマウスでリスト項目をドロップダウンの不慮のスクロールにこの真見つけます。)あなたがドロップダウンを作成するコードでは、これを追加します:
''// You already have this code...
Dim oDropDown as New DropDown
''// Whatever other declarations you need...
AddHandler oDropDown.SelectedIndexChanged, _
AddressOf oDropDown_SelectedIndexChanged
通常は、あなたがツールボックスからプロジェクトにドロップダウンを追加し、あなたはSelectedIndexChangedイベントを選択するために、CodeViewの下のドロップダウンメニューを使用することができます。私たちは、この例ではこれを手動で行うので、あなたのサブルーチンを作成する必要があります:
Public Sub oDropDown_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
''// Do whatever you need to do here
''// I sometimes do this to make code manipulation easier:
Dim _sender as DropDown = CType(sender, DropDown)
End Sub
助け希望!