3 .net c# asp.net drop-down-menu
I have one dropdownlist named drpdemo and consist some listitems as shown below
Design Code:
<asp:DropDownList ID="drpdemo" runat="server">
<asp:ListItem Value="213">Select</asp:ListItem>
<asp:ListItem Value="0">0</asp:ListItem>
<asp:ListItem Value="2">2</asp:ListItem>
<asp:ListItem Value="3">3</asp:ListItem>
<asp:ListItem Value="4">4</asp:ListItem>
<asp:ListItem Value="5">5</asp:ListItem>
<asp:ListItem Value="0">0</asp:ListItem>
</asp:DropDownList>
Run Code Online (Sandbox Code Playgroud)
Inline Code:
protected void Page_Load(object sender, EventArgs e)
{
drpdemo.Items.Remove(drpdemo.Items.FindByValue("0"));
}
Run Code Online (Sandbox Code Playgroud)
Current Output:
Select
2
3
4
5
0
Run Code Online (Sandbox Code Playgroud)
Above output comes with the 0, which i don't want it in output.
Expected Output:
Select
2
3
4
5
Run Code Online (Sandbox Code Playgroud)
注意:不想使用任何循环。
您必须使用循环,因为Remove需要一个ListItem并FindByValue只返回一个ListItem。
要删除项目,我们可以这样做:
var toDelete = drpDemo.Items
.Cast<ListItem>()
.Where(i => i.Value == "0");
Run Code Online (Sandbox Code Playgroud)
然后你可以这样做:
foreach (var item in toDelete)
{
drpDemo.Items.Remove(item);
}
Run Code Online (Sandbox Code Playgroud)
或者,如果您在功能上倾向于,请执行以下操作:
toDelete.ForEach(i => drpDemo.Items.Remove(i));
Run Code Online (Sandbox Code Playgroud)
合而为一:
drpDemo.Items
.Cast<ListItem>()
.Where(i => i.Value == "0")
.ToList()
.ForEach(i => drpDemo.Items.Remove(i));
Run Code Online (Sandbox Code Playgroud)