Vb.net dropdownlist.net
这是我在vb.net中的代码-Vb.net dropdownlist.net,vb.net,drop-down-menu,Vb.net,Drop Down Menu,这是我在vb.net中的代码- Public Sub Load_dates(ByRef DDL As System.Web.UI.WebControls.DropDownList) Try Dim i As Integer Dim j As Integer Dim time As DateTime = DateTime.Now For i = Now.Year To Now.Year For j =
Public Sub Load_dates(ByRef DDL As System.Web.UI.WebControls.DropDownList)
Try
Dim i As Integer
Dim j As Integer
Dim time As DateTime = DateTime.Now
For i = Now.Year To Now.Year
For j = 0 To 11
DDL.Items.Add((time.AddMonths(j)).ToString("MMMM") + " " + (i.ToString))
Next
Next
Catch ex As Exception
ReportError(ex)
End Try
End Sub
在我得到所有的月份(0到11)后,我想选取第11条记录,并将其添加为最后一条记录,最后加上一个“+”。
e、 g-最后一条记录=2011年12月,那么之后的记录应该是2011年12月+这是一个丑陋的解决方案
Public Sub Load_dates(ByRef DDL As System.Web.UI.WebControls.DropDownList)
dim last as string
last = ""
Try
Dim i As Integer
Dim j As Integer
Dim time As DateTime = DateTime.Now
For i = Now.Year To Now.Year
For j = 0 To 11
last = (time.AddMonths(j)).ToString("MMMM")
+ " " + (i.ToString)
DDL.Items.Add(last)
Next
Next
Catch ex As Exception
ReportError(ex)
End Try
if not last = "" then DDL.Items.Add(last+"+")
End Sub
注意,我没有测试可能有打字错误。这里有一个难看的解决方案供您使用
Public Sub Load_dates(ByRef DDL As System.Web.UI.WebControls.DropDownList)
dim last as string
last = ""
Try
Dim i As Integer
Dim j As Integer
Dim time As DateTime = DateTime.Now
For i = Now.Year To Now.Year
For j = 0 To 11
last = (time.AddMonths(j)).ToString("MMMM")
+ " " + (i.ToString)
DDL.Items.Add(last)
Next
Next
Catch ex As Exception
ReportError(ex)
End Try
if not last = "" then DDL.Items.Add(last+"+")
End Sub
注意:我没有测试可能存在的拼写错误。这段代码在很多方面都会造成伤害。我将回答您的问题,但首先有一些提示:
- 参数应该有好的名称。“DDL”对我来说毫无意义。此外,除非绝对必要,否则不应通过引用方式传递。您没有修改DLL(只修改它指向的内容),所以请按值传递它
- 如果可能的话,这些方法应该没有副作用。通过传入下拉列表,而不仅仅是返回条目,您引入了副作用。这还将该方法与特定的下拉控件类型相耦合
- i和j的声明是多余的(假设optioninferon),并将它们的范围推到循环之外
- 为什么我在今年循环?通过这样做,您引入了一些时间敏感的bug(如果在除夕夜午夜执行,循环可能会运行两次)
- 您正在为“时间”添加月份,但打印的年份是固定的。你将在“2009年12月”之后看到“2009年1月”李>
- 为什么您要在这么简单的方法中捕获这样一个常规异常?我看不到任何可能引发您希望在这个级别报告的异常的调用
- 如果您想更改向前投影的月数,该怎么办?“12”是含蓄的 隐藏在For循环的深处李>
Public Function GenerateMonthEntries(monthCount as integer) as IList(of String)
dim result = new List(Of String)()
dim time = DateTime.Now
for i = 0 to monthCount - 1
result.add(time.AddMonths(i).ToString("MMMM yyyy"))
next i
result.add(time.AddMonths(monthCount).ToString("MMMM yyyy") + "+")
return result
End Function
... where you're using the function ...
for each entry in GenerateMonthEntries(12) 'maybe the 12 should be a constant somewhere
whateverDropDownList.Items.add(entry)
next
但不要被愚弄,这段代码并不完美。也许输出类型应该是更通用的IEnumerable(字符串)。也许“time”变量应该是一个参数,这样您就可以轻松地测试该方法,并使其真正的依赖关系变得明显。这段代码在很多方面都有缺陷。我将回答您的问题,但首先有一些提示:
- 参数应该有好的名称。“DDL”对我来说毫无意义。此外,除非绝对必要,否则不应通过引用方式传递。您没有修改DLL(只修改它指向的内容),所以请按值传递它
- 如果可能的话,这些方法应该没有副作用。通过传入下拉列表,而不仅仅是返回条目,您引入了副作用。这还将该方法与特定的下拉控件类型相耦合
- i和j的声明是多余的(假设optioninferon),并将它们的范围推到循环之外
- 为什么我在今年循环?通过这样做,您引入了一些时间敏感的bug(如果在除夕夜午夜执行,循环可能会运行两次)
- 您正在为“时间”添加月份,但打印的年份是固定的。你将在“2009年12月”之后看到“2009年1月”李>
- 为什么您要在这么简单的方法中捕获这样一个常规异常?我看不到任何可能引发您希望在这个级别报告的异常的调用
- 如果您想更改向前投影的月数,该怎么办?“12”是含蓄的 隐藏在For循环的深处李>
Public Function GenerateMonthEntries(monthCount as integer) as IList(of String)
dim result = new List(Of String)()
dim time = DateTime.Now
for i = 0 to monthCount - 1
result.add(time.AddMonths(i).ToString("MMMM yyyy"))
next i
result.add(time.AddMonths(monthCount).ToString("MMMM yyyy") + "+")
return result
End Function
... where you're using the function ...
for each entry in GenerateMonthEntries(12) 'maybe the 12 should be a constant somewhere
whateverDropDownList.Items.add(entry)
next
但不要被愚弄,这段代码并不完美。也许输出类型应该是更通用的IEnumerable(字符串)。也许“time”变量应该是一个参数,这样您就可以轻松地测试该方法,并使其真正的依赖关系变得明显。获得年份
- XX是您的下拉列表名称
Dim currentYear As Integer=DateTime.Now.Year 对于i,作为整数=1980到当前年份 二十、 项目.添加(i) 下一步
- XX是您的下拉列表名称
Dim currentYear As Integer=DateTime.Now.Year 对于i,作为整数=1980到当前年份 二十、 项目.添加(i) 下一步
- 以获得年