[英]C# Dropdown items 0 - 100 without adding each item?
對不起,如果這是一個愚蠢的問題......我只是想學習最好的方法。 基本上我想要一個值為空的下拉列表,然后是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") %>
ddl.DataSource = Enumerable.Range(1, 100);
ddl.DataBind();
如果這是webforms:
我想你在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());
}
VB:
For i As Integer = 0 To 100
ddlperiod.Items.Add(i)
Next
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();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.