Vb.net dropdownlist.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 =

这是我在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 = 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)
        下一步

      @Strilanc,你真厉害!正是因为这个原因,我说我的答案是“丑陋的”+感谢你花时间为这个家伙做正确的事情,而不仅仅是添加糟糕的代码,让它解决需求。@Strilanc你棒极了!正是因为这个原因,我说我的答案是“丑陋的”+1感谢你花时间为他做正确的事情,而不仅仅是添加糟糕的代码来解决需求。