这里有几个简单的例子来说明如何在 Page_Load 上隐藏 ListItem
HTML
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="_testPW22.aspx.vb" Inherits="_testPW22" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:DropDownList ID="stateDropDownList" AutoPostBack="true" style="align-content:center; margin-left:200px" width="100px" runat="server">
<asp:ListItem Selected="True" disabled="disabled" Value=""> Email Lists </asp:ListItem>
<asp:ListItem Value="kiosk"> Kiosk </asp:ListItem>
<asp:ListItem Value="alert1"> Alert 1 </asp:ListItem>
<asp:ListItem Value="alert2"> Alert 2 </asp:ListItem>
<asp:ListItem Value="alert3"> Alert 3 </asp:ListItem>
</asp:DropDownList>
</div>
</form>
</body>
</html>
代码隐藏
Imports System.Linq
Partial Class _testPW22
Inherits System.Web.UI.Page
Private Class Store
Public Property HasKiosk As Boolean = False
End Class
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
' Load up your Store object, or whatever object it is you are using to determine if it has a Kiosk
Dim store As New Store()
If Not store.HasKiosk Then
' Option 1 if you know the index
stateDropDownList.Items.RemoveAt(1)
' Opton 2 - you need to count down to 0 in order to remove from the collection you are iterating through
For i As Integer = stateDropDownList.Items.Count - 1 To 0 Step -1
If String.Equals(stateDropDownList.Items(i).Value, "Kiosk", StringComparison.InvariantCultureIgnoreCase) Then
stateDropDownList.Items.RemoveAt(i)
End If
Next
' Option 3 - fancy LINQ
' Make sure list item exists first, and then remove it
If stateDropDownList.Items.Cast(Of ListItem)().Any(Function(r) String.Equals(r.Value, "Kiosk", StringComparison.InvariantCultureIgnoreCase)) Then
stateDropDownList.Items.Remove(stateDropDownList.Items.Cast(Of ListItem)().FirstOrDefault(Function(r) String.Equals(r.Value, "Kiosk", StringComparison.InvariantCultureIgnoreCase)))
End If
End If
End Sub
End Class
然后,如果您想动态执行此操作,则可以使用此示例。我在添加动态控件时使用 PlaceHolders。有几种不同的方法可以添加下面引用的 ListItem。
<asp:PlaceHolder ID="DropDownListPlaceHolder" runat="server" />
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
' Load up your Store object, or whatever object it is you are using to determine if it has a Kiosk
Dim store As New Store()
Dim ddl As New DropDownList()
ddl.ID = "TestID"
ddl.AutoPostBack = True
ddl.Style.Add("align-content", "center")
ddl.Width = New Unit(100)
Dim li As New ListItem("EmaiL Lists", String.Empty)
li.Selected = True
li.Attributes.Add("disabled", "disabled")
ddl.Items.Insert(0, li)
ddl.Items.Insert(1, New ListItem("Alert 1", "1"))
ddl.Items.Add(New ListItem("Alert 2", "2"))
If store.HasKiosk Then
ddl.Items.Add(New ListItem("Kiosk", "2"))
End If
End Sub