2013-07-09 3 views
-1

ExampleКак заполнить DropDown Количество недель и даты в месяц

  1. Выберите месяц & год
  2. Заливка dropdownllist с номерами недели и дату в месяц

Например, выбрав 4-й месяц (апрель) выход WeekNo будет выглядеть следующим образом:

Week No Date 
Week 1 [1-7] 
week 2 [8-14] 
Week 3 [15-21] 
week..... 
+0

Вы собираетесь должны размещать код, чтобы показать нам, что вы делали до сих пор в попытке выполнить эту задачу. –

ответ

2

это полный C# код, чтобы сделать это

protected void Page_Load(object sender, EventArgs e) 
    { 
     if(!IsPostBack) 
     { 
      LoadMonthDdl(); 
     } 
    } 

    private void LoadMonthDdl() 
    { 
     ddlMotnh.Items.Clear(); 
     ddlMotnh.Items.Add(new ListItem("January-"+DateTime.Now.Year,"1")); 
     ddlMotnh.Items.Add(new ListItem("February-" + DateTime.Now.Year, "2")); 
     ddlMotnh.Items.Add(new ListItem("March-" + DateTime.Now.Year, "3")); 
     ddlMotnh.Items.Add(new ListItem("April-" + DateTime.Now.Year, "4")); 
     ddlMotnh.Items.Add(new ListItem("May-" + DateTime.Now.Year, "5")); 
     ddlMotnh.Items.Add(new ListItem("June-" + DateTime.Now.Year, "6")); 
     ddlMotnh.Items.Add(new ListItem("July-" + DateTime.Now.Year, "7")); 
     ddlMotnh.Items.Add(new ListItem("August-" + DateTime.Now.Year, "8")); 
     ddlMotnh.Items.Add(new ListItem("Septeber-" + DateTime.Now.Year, "9")); 
     ddlMotnh.Items.Add(new ListItem("October-" + DateTime.Now.Year, "10")); 
     ddlMotnh.Items.Add(new ListItem("November-" + DateTime.Now.Year, "11")); 
     ddlMotnh.Items.Add(new ListItem("December-" + DateTime.Now.Year, "12")); 

    } 
    protected void weekWithDate_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     ddlweekWithDate.Items.Clear(); 
     int month = Convert.ToInt32(ddlMotnh.SelectedValue); 
     DateTime beginDate= new DateTime(DateTime.Now.Year,month,1); 
     int beginDay = beginDate.Date.Day; 
     int noOfDay = System.DateTime.DaysInMonth(DateTime.Now.Year, month); 
     int weekNo=1; 
     int weekStartDate = 1; 
     string str = ""; 
     while (beginDay<=noOfDay) 
     { 

      str = "week " + weekNo.ToString()+"["+weekStartDate; 
      int newWeekN0 = GetWeekOfMonth(beginDate); 
      if(weekNo==newWeekN0) 
      { 
      } 
      else 
      { 
       str += "-" + beginDate.AddDays(-1).Day + "]"; 
       ddlweekWithDate.Items.Add(new ListItem(str, newWeekN0.ToString())); 
       weekNo = newWeekN0; 
       weekStartDate = beginDate.Date.Day; 
      } 
      beginDate = beginDate.AddDays(1); 
      beginDay++; 
     } 
     if(!str.Contains("]")) 
     { 
      str += "-" + noOfDay + "]"; 
      ddlweekWithDate.Items.Add(new ListItem(str, weekNo.ToString())); 
     } 


    } 
    public static int GetWeekOfMonth(DateTime date) 
    { 
     DateTime beginningOfMonth = new DateTime(date.Year, date.Month, 1); 

     while (date.Date.AddDays(1).DayOfWeek != CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek) 
      date = date.AddDays(1); 

     return (int)Math.Truncate((double)date.Subtract(beginningOfMonth).TotalDays/7f) + 1; 
    } 

это HTML

<asp:DropDownList runat="server" ID="ddlMotnh" AutoPostBack="True" onselectedindexchanged="weekWithDate_SelectedIndexChanged"/> 
    <asp:DropDownList runat="server" ID="ddlweekWithDate" 
     /> 

Он работает здесь хорошо. просто конвертируйте этот код C# в VB для целей ура

+0

Спасибо, я получил вывод – Jig12

0

Использование DateTimePicker с пользовательским форматом «MMMM-yyyy» позволит выбрать месяц и год. Затем обработка события ValueChanged сделает заполнение выпадающего простым способом, как это:

Private Sub DateTimePicker1_ValueChanged(sender As System.Object, e As _ 
     System.EventArgs) Handles DateTimePicker1.ValueChanged 

    Dim PickedDate As New DateTime(DateTimePicker1.Value.Year, _ 
     DateTimePicker1.Value.Month, 1) 

    'Offset to the start of the second week 
    Dim FirstWeek As Integer = 7 - PickedDate.DayOfWeek 
    ComboBox1.Items.Clear() 
    ComboBox1.Text = "Select Week No. and Dates" 
    'Add first week to CB 
    ComboBox1.Items.Add("Week 1 [1-" + FirstWeek.ToString + "]") 
    'Point PickedDate to the start of the second week 
    PickedDate = PickedDate.AddDays(FirstWeek) 
    'The number of days left in the month 
    Dim MonthDays As Integer = DateTime.DaysInMonth(PickedDate.Year, _ 
     PickedDate.Month) - PickedDate.Day 

    'Loop to add the rest of the CB items 
    For I = 0 To MonthDays Step 7 
     Dim FromDate As Integer = PickedDate.Day + I 
     Dim ToDate As Integer = PickedDate.Day + I + 6 
     If ToDate > MonthDays + PickedDate.Day Then ToDate = MonthDays + _ 
      PickedDate.Day 

     ComboBox1.Items.Add("Week " + (CInt(I/7) + 2).ToString + " [" + _ 
      FromDate.ToString + "-" + ToDate.ToString + "]") 

    Next 
End Sub 
Смежные вопросы