如何在数据表中使用for循环添加年份列表?

时间:2015-07-31 10:59:51

标签: c# .net datetime datatable

我有以下代码,但它得到错误 - 输入数组比此表中的列数长。

    DataTable dtYear = new DataTable();
    int Year1 = Convert.ToInt32(DateTime.Now.ToString("yyyy")); 
    for (i = 1980; i <= Year1; i++)   
    {
       dtYear.Rows.Add(i); 
    } 
     ddlYear.DataSource = dtYear; 
     ddlYear.DataBind();

4 个答案:

答案 0 :(得分:4)

您的DataTable不包含任何列 - 因此您无法添加包含列值的行。

编辑:

更改您的代码:

DataTable dtYear = new DataTable();

dtYear.Columns.Add("Year", typeof(int));   // add this line

int Year1 = Convert.ToInt32(DateTime.Now.ToString("yyyy")); 
for (i = 1980; i <=> Year1; i++)   
{
   dtYear.Rows.Add(i); 
} 
 ddlYear.DataSource = dtYear; 
 ddlYear.DataBind();

答案 1 :(得分:1)

首先将“Year”列添加到DataTable。

dtTable.Columns.Add("Year", typeof(int));

您可以使用Year的{​​{1}}属性。

DateTime

并且您还应该在for条件中使用有效的比较运算符。 int Year1 = DateTime.Now.Year; 在c#中无效。

<=>

答案 2 :(得分:0)

我不认为你的代码甚至会编译,所以它是如何抛出错误的。

在将值分配给行之前使用数据列。

这是您的代码中的一些修改。

            DataTable dtYear = new DataTable(); 
            int Year1 = Convert.ToInt32(DateTime.Now.ToString("yyyy"));
            //add columns to DataTable
            dtYear.Columns.Add("Years",typeof(int), null);

            for (int i = 1980; i <= Year1; i++) 
            {
                dtYear.Rows.Add(i);
            } 


           ddlYear.DataSource = dtYear;
           ddlYear.DataTextField = "Years";
           ddlYear.DataBind();
希望这会有所帮助。

答案 3 :(得分:0)

您必须首先将列添加到DataTable:

 DataTable dtYear = new DataTable();
 dtYear.Columns.Add("year",typeof(int)); // add the column
 int Year1 = Convert.ToInt32(DateTime.Now.ToString("yyyy"));
 for (int i = 1980; i <= Year1; i++)
 {
     dtYear.Rows.Add(i);
 }
 ddlYear.DataSource = dtYear;
 ddlYear.DataBind();
相关问题