我有以下代码,但它得到错误 - 输入数组比此表中的列数长。
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();
答案 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();