JavaScript (__dopostback...) を使用してトリガーできるページ上のボタンを非表示にする必要があります。また、ページ上のオブジェクトのリストと、ページ上のそれらのオブジェクトを並べ替える可能性をユーザーに提供するドロップダウンリストもあります。
私のコードは、リストの Databind でドロップダウンリストの現在の値をチェックし、選択した並べ替え方法をリストに適用します。
最初のボタンは、ユーザーがリストから別の並べ替え方法を選択したときにトリガーされます。
2 番目のボタンは、ユーザーが新しいアイテムをリストに追加したときにトリガーされます。これが発生した場合、ドロップダウンリストでソートメソッド「sort2」が自動的に設定されます。
したがって、2 番目のボタンがクリックされたときに、ドロップダウン リストの選択した項目を動的に設定する必要があります。これにより、後でドロップダウン リストの DataBind メソッドで選択した値の値を確認し、どの並べ替え方法を適用する必要があるかを知ることができます。
ここで私を助けてくれるので、それがどういうわけか明確になることを願っています。選択した値を動的に変更できません。
私はコントロールに使用しています: 1 つ目は 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
ここで私を助けるために必要な情報を提供できます。お時間を割いていただき、本当にありがとうございます。