私はJavaScriptを使用してトリガーできるページ上に非表示のボタンが必要です(__dopostback ...) 私のページにはオブジェクトのリストとドロップダウンリストユーザーにページ上のそれらのオブジェクトをソートする可能性を与える。ButtonClickで動的に作成されたドロップダウンリストの選択項目を変更するには
マイコードは、リストの[データバインド]のドロップダウンリストの現在の値をチェックし、選択したソート方法をリストに適用します。
ユーザーがリストから別のソート方法を選択すると、最初のボタンがトリガーされます。
ユーザーが新しい項目をリストに追加すると、2番目のボタンがトリガーされます。このような場合は、sortmethod "sort2"をドロップダウンリストに自動的に設定する必要があります。
したがって、2番目のボタンをクリックしたときに、ドロップダウンリストのDataBindメソッドで選択した値の値を後で確認できるように、ドロップダウンリストの選択項目を動的に設定する必要があります。 。
私はここで私を助けることができるので、それは何とかしていることを願っています。選択した値を動的に変更することはできません。
私はコントロールに使用しています:最初はobjects.vb、2番目はObjectContainer.vbです。 Objects.vbには、ドロップダウンリストとobjectcontainerのインスタンスという2つのボタンがあります。 objectcontainerには、オブジェクトコントロールで選択された値に基づいてソートする必要があるオブジェクトのリストが含まれます。
Objects.vb:
Private sortMethod As DropdownList
Private container as ObjectContainer
Protected Overrides Sub OnInit(ByVal e As System.EventArgs)
MyBase.OnInit(e)
EnsureChildControls()
End Sub
Protected Overrides Sub CreateChildControls()
MyBase.CreateChildControls()
' Add sorting
sortMethod = New DropDownList()
sortMethod.ID = "sortlist"
CType(sortMethod.Items, IStateManager).TrackViewState()
If Not Page.IsPostBack Then
Dim sort1 As New ListItem()
sort1.Text = "Sort Method 1"
sort1.Value = "sort1"
Dim sort2 As New ListItem()
sort2.Text = "Sort Method 2"
sort2.Value = "sort2"
Dim sort3 As New ListItem()
sort3.Text = "Sort Method 3"
sort3.Value = "sort3"
sortMethod.Items.Add(sort1)
sortMethod.Items.Add(sort2)
sortMethod.Items.Add(sort3)
sortMethod.AutoPostBack = False
sortMethod.EnableViewState = True
sortMethod.Attributes.Add("onchange", "javascript:TriggerPostbackButtonUpdate()")
End If
Me.Controls.Add(sortMethod)
container = New ObjectContainer
container.ID = "oc"
Me.Controls.Add(container)
End Sub
Protected Sub ButtonUpdate_Click(ByVal sender As Object, ByVal e As System.EventArgs)
container.SortMethodAndOrder = sortMethod.SelectedValue
container.DataBind()
End Sub
'when this event is triggered, the "sort2" item should be selected after the postback
Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs)
sortMethod.SelectedIndex = sortMethod.Items.IndexOf(sortMethod.Items.FindByValue("sort2"))
container.SortMethodAndOrder = "sort2"
container.DataBind()
End Sub
ObjectContainer.vb:
Public Overloads Overrides Sub DataBind()
EnsureChildControls()
Dim objects As ObjectsCollection = Nothing
If objects.Count <> 0 Then
Dim sortList As DropDownList = DirectCast(Me.Parent.FindControl("sortlist"), DropDownList)
If sortList IsNot Nothing Then
'sort based on the selected value in the dropdownlist
End If
End If
End Sub
私はあなたがここに私を助けるために必要なすべての情報を提供することができます。私はあなたの時間を本当に感謝していますので、これを読む時間を取ってくれてありがとう!
こんにちは、ありがとうございましたが、最終的にjqueryを使用して選択した項目を設定しました。ポストバックでリストが空であるため、私は自分のコードでtrackviewstateを持っていますか?私はそれについてはわからないが、それは私のために働く...私はそれを削除するときにエラーがある.. – ThdK