场景:网站上的每个页面顶部都会有一个菜单栏,由许多按钮组成。某些页面具有相同数量的按钮来执行相同的操作(例如重定向到页面),但某些按钮取决于页面上当前的信息。问题:我希望能够覆盖控件上的按钮,以便我可以按页面处理它。我也在想也许使用事件并以这种方式处理它会更容易。这些方法中的任何一种是否可能,如果没有,是否有替代方法?
我目前拥有的代码如下
在 aspx 页面中
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
Dim myMenu As MenuBar
myMenu = CType(Master.FindControl("MenuBar1"), MenuBar)
myMenu.ShowButtons(MenuBar.Buttons.NewOrganization, MenuBar.Buttons.NewEquipment, MenuBar.Buttons.ChangeEquipmentOwner, MenuBar.Buttons.ChangeEquipmentLocation)
End If
End Sub
ascx 控件
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
RaiseEvent myEvent(sender, e)
End If
End Sub
Public Sub ShowButtons(ByVal ParamArray args() As Buttons)
For i As Integer = 0 To args.GetUpperBound(0)
SetVisible(args(i))
Next
End Sub
Public Enum Buttons
NewOrganization = 1
NewEquipment = 2
ChangeEquipmentOwner = 3
ChangeEquipmentLocation = 4
UnderDevelopment = 5
CheckoutEquipment = 6
EditDocument = 7
CreateEquipmentLoanForm = 8
End Enum
Private Sub SetVisible(ByVal btn As Buttons)
Select Case (btn)
Case 1
btnNewOrganization.Visible = True
Case 2
btnNewEquipment.Visible = True
Case 3
btnChangeOwner.Visible = True
Case 4
btnChangeLocation.Visible = True
Case 5
btnUnderDevelopment.Visible = True
Case 6
btnCheckoutEquipment.Visible = True
Case 7
btnEditDocument.Visible = True
Case 8
btnCreateEquipment.Visible = True
End Select
End Sub