我必须在我的页面上隐藏可以使用 JavaScript 触发的按钮(__dopostback...)。我的页面上还有一个对象列表和一个下拉列表,让用户可以对页面上的这些对象进行排序。
我的代码检查列表的 Databind 上下拉列表的当前值,并将选择的排序方法应用于列表。
当用户从列表中选择了另一种排序方法时,将触发第一个按钮。
当用户向列表中添加新项目时,会触发第二个按钮。如果发生这种情况,应该在下拉列表中自动设置排序方法“sort2”。
因此,当单击第二个按钮时,我需要动态设置下拉列表的选定项,以便稍后在下拉列表的 DataBind 方法中检查选定值的值,并知道应该应用哪种排序方法。
我希望它有点清楚,所以你可以在这里帮助我。我没有成功动态地更改所选值。
我正在使用控件:第一个是objects.vb,第二个是ObjectContainer.vb Objects.vb 包含两个按钮,下拉列表和objectcontainer 的实例。objectcontainer 包含需要根据在对象控件中选择的值排序的对象的列表。
对象.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
对象容器.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
我可以提供您需要的任何信息来帮助我。我非常感谢您抽出宝贵的时间,非常感谢您花时间阅读本文!