2017-04-25 5 views
0

asp.net C#のドロップダウンに最後の18ヶ月を追加する必要があります。最後の18ヶ月のリストをCでドロップダウンする#

私は次のように最後の18ヶ月を取得するためのロジックを書かれている。、

List<string> dateList= new List<string>(); 
    private List<string> GetDateDropDownList(DropDown pDropDown) 
    { 
     DateTime dt = DateTime.Now; 
     for (int i = 1; i <= 18; i++) 
     { 
      dt = dt.AddMonths(-1); 
      var month = dt.ToString("MMMM"); 
      var year = dt.Year; 
      dateList.Add(String.Format("{0}-{1}", month, year)); 
     } 
     return dateList; 
     } 

は、今私がドロップダウンするために、このリストを追加する必要があります。私は試していますが、うまくいきません。ドロップダウンに追加するにはどうしたらいいですか?

答えて

0

他の人たちと同じように、関数をバインドするだけです。

ただし、コードには少し問題があります。 dateListは、実際のメソッドの外側ではなく、実際のメソッドの外側に作成します。メソッドにドロップダウンリストを渡す必要もありません。

だからあなたの更新方法は、次のようになります。

private List<string> GetDateDropDownList()// get rid of parameter 
{ 
    List<string> dateList= new List<string>(); // inside method 
    DateTime dt = DateTime.Now; 
    for (int i = 1; i <= 18; i++) 
    { 
     dt = dt.AddMonths(-1); 
     var month = dt.ToString("MMMM"); 
     var year = dt.Year; 
     dateList.Add(String.Format("{0}-{1}", month, year)); 
    } 
    return dateList; 
    } 

そして、あなたは次の操作を行うことができ、あなたのオリジナルの方法で、別の方法

myDropdown.DataSource = GetDateDropDownList(); 
myDropdown.DataBind(); 

にあなたのドロップダウン直接結合するが - それは今だ気づきますvoidを返し、リストを返しません。

private void GetDateDropDownList(DropDown pDropDown) 
    { 
     List<string> dateList= new List<string>(); 
     DateTime dt = DateTime.Now; 
     for (int i = 1; i <= 18; i++) 
     { 
      dt = dt.AddMonths(-1); 
      var month = dt.ToString("MMMM"); 
      var year = dt.Year; 
      dateList.Add(String.Format("{0}-{1}", month, year)); 
     } 
     pDropDown.DataSource = dateList; 
     pDropDown.DataBind() 
     } 

そして、あなたは単にあなたのドロップダウンリストに

GetDateDropDownList(myDropdownList); 
0

あなたの方法でやっていることは、リストを作成することだけです。それをドロップダウンに追加することは決してありません。このように...

pDropDown.DataSource = dateList; 
pDropDown.DataBind(); 
0

あなたは現在の文字列のリストを構築しているが、あなたのドロップダウン内でそれが見えるようにするために、あなたは、具体的DataSourceプロパティを設定して、変更を適用するためにDataBind()を呼び出す必要があります:

// This sets your data 
pDropDown.DataSource = dateList; 
// This actually binds the current data to the DropDownList control 
pDropDown.DataBind(); 

また、あなたはおそらく(あなたには、いくつかの他の理由のためにそれらを必要としない場合)、このメソッドから任意の値を返すする必要はありません、それはvoidを返すことを検討できます。

private void SetDatesForDropDown(DropDown pDropDown, int monthsBack = 18) 
{ 
    List<string> dateList= new List<string>(); 
    DateTime dt = DateTime.Now; 
    for (int i = 1; i <= monthsBack; i++) 
    { 
     dt = dt.AddMonths(-1); 
     dateList.Add(dt.ToString("MMMM-yyyy")); 
    } 

    pDropDown.DataSource = dateList; 
    pDropDown.DataBind(); 
} 

それとも単にDropDownパラメータを削除し、設定する方法の結果を使用して、あなたのDataSource

private void GetDateRanges(int monthsBack = 18) 
{ 
    List<string> dateList= new List<string>(); 
    DateTime dt = DateTime.Now; 
    for (int i = 1; i <= monthsBack; i++) 
    { 
     dt = dt.AddMonths(-1); 
     dateList.Add(dt.ToString("MMMM-yyyy")); 
    } 

    return dateList; 
} 

と一緒に:

はこれを行うためのいくつかの方法があります
YourDropDown.DataSource = GetDateRanges(); 
YourDropDown.DataBind(); 
+0

を渡すあなたに1つ、すべてに感謝します。 – 123456

0

、以下の通りですそのような方法です。 ドロップダウンリストにバインドすることを忘れないでください。

EDITED -

フロントエンド選択された値を取得 - ASPX

<asp:DropDownList ID="DropDownList1" runat="server" OnLoad="DropDownList1_Load" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" AutoPostBack="true"></asp:DropDownList> 

分離コード - C#

//Populate the DropDownList 
protected void DropDownList1_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     // Instantiate your DropDownList 
     DropDownList drpList = (DropDownList)sender; 

     List<string> dateList = new List<string>(); 
     DateTime dt = DateTime.Now; 
     for (int i = 1; i <= 18; i++) 
     { 
      dt = dt.AddMonths(-1); 
      var month = dt.ToString("MMMM"); 
      var year = dt.Year; 
      dateList.Add(String.Format("{0}-{1}", month, year)); 
     } 

     // Bind resulting list to the DropDownList 
     drpList.DataSource = dateList; 
     drpList.DataBind(); 
    } 
} 

//Get the Selected Value on change 
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     // assign the selected item value to a variable 
     string value = ((DropDownList)sender).SelectedValue; 
    } 

+0

@ケビン...ありがとう。このイベントメソッドは私のために働いた。 – 123456

+0

@Kevin ...どのようにドロップダウンリストからList Item Valueを選択できますか?私は変数のドロップダウンリストから選択した日付を保存します。 – 123456

+0

リスト項目の値を選択する方法について私の回答を編集しました。代わりに、_SelectedIndexChanged_以外のメソッドから値を取得したい場合は、単純に 'DropDownList1.SelectedValue'を呼び出すことができます。 –

関連する問題