C# 下拉项 0 - 100,而不添加每个项
本文关键字:添加 | 更新日期: 2023-09-27 17:56:08
对不起,如果这是一个愚蠢的问题......我只是想学习最好的方法。 基本上,我想有一个下拉列表,其中值为空白,然后是 0 - 100。
无需手动输入每个内容的最佳方法是什么。 我想它是通过某种形式的列表绑定到下拉列表。
提前感谢您的帮助。
这里有一种方法可以做到这一点:
ddl.Items.AddRange(Enumerable.Range(0, 100).Select (e => new ListItem(e.ToString())).ToArray());
你可以
只使用for
循环。
myControl.Items.Add(new ListItem(string.Empty, -1));
for(int j = 0; j < 100; j++)
{
var newOption = new ListItem("Item #" + (j + 1).ToString(), j.ToString());
myControl.Items.Add(newOption);
}
如果您将列表(数组、集合等)作为数据源绑定到下拉列表中(winforms?webforms?),则始终会创建项目。如果您不想手动添加每个项目,可以使用代码来完成:
// this code is for winforms
dropDown.Items.Clear();
dropDown.Items.Add( string.Empty );
for(int i = 0; i <= 100; i++ ) {
dropDown.Items.Add( i.ToString() );
}
例如在 asp.net MVC中:
控制器:
ViewData["list"] = new SelectList(Enumerable.Range(0, 101)
.Select(p => new SelectListItem() { Text = p.ToString(), Value = p.ToString() }));
视图:
<%=Html.DropDownList("numbers", ViewData["list"] as SelectList, "Select a number") %>
如果这是网络表单:
我想你想在你的page_load活动中做这样的事情。
if(Page.IsNotPostBack)
{
DropDownList1.Items.Add(new ListItem("",""));
for(int i = 0; i <= 100; i++)
DropDownList1.Items.Add(new ListItem(i.ToString(), i.ToString());
}
ddl.DataSource = Enumerable.Range(1, 100);
ddl.DataBind();
combo.Items.Add("")
for (int i = 0; i < 100; i++)
combo.Items.Add(i)
此外,请考虑使用最大值为 100 的 NumericUpDown 控件。这不会给你空白的选择,但可以说是一个更好的可用性选择。
创建一个实用程序来生成您的值:
public class Utils
{
public static IEnumerable<string> GetSequenceEntries(long maxValue)
{
yield return string.Empty;
for(int i=1; i<=maxValue; i++)
{
yield return i.ToString();
}
}
}
然后,对于 WinForms 应用程序,绑定它类似于以下内容:
private void Form1_Load(object sender, EventArgs e)
{
comboBox1.DataSource = Utilities.Utils.GetSequenceEntries(100).ToList<string>();
}
或者对于 ASP.NET 像这样绑定它:
protected void Page_Load(object sender, EventArgs e)
{
ddl1.DataSource = Utilities.Utils.GetSequenceEntries(100);
ddl1.DataBind();
}
vb:
For i As Integer = 0 To 100
ddlperiod.Items.Add(i)
Next